Essentially:
Use Static Proxies for "small", fixed systems where performance and compile-time safety are on the top of your list.
Use Dynamic Proxies: For large, flexible systems where runtime adaptation and scalability are more your points to hit. Great for frameworks, plugins, or AOP. You know, that sort of thing.
Rule of Thumb: Start with static for simplicity; switch to dynamic as your system grows in complexity or as operationally necessary.
(Now, there's also other proxies but they're either an overlap with the other types in one aspect or another, or are real specific with their interactions/ use. For most parts, you only really choose between Static or Dynamic since the others fall well into fringe cases.)