-L, SSH forwards all connections to a fixed destination. When you connect to the local port, all data you send goes straight to the remote host which you specified in
-L. This, obviously, requires you to know which host you want to forward connections to.
-D, the destination is "dynamic" – after connecting to the local port, you have to use the SOCKS proxy protocol to further connect to whatever remote host you want. This basically makes SSH a real proxy server, suitable for such activities as web browsing, where you cannot know in advance the destination.
ssh -D 1080, for example, and configure Firefox to use a SOCKS 5 proxy at