The main difference between them is not the programmable pipeline because that is also available in DirectX 9.0c. The big difference is that DX10 and DX11 are far more verbose and handle things a bit differently. Some of the calls have been changed and setup is a bit different. Both feel more clunky than DirectX 9 but both are more specific than DirectX 9 and more powerful but not for any of the reasons mentioned thus far.

You should be able to jump into DirectX 10 or DirectX 11 from the start and be able to work with them. If you get too familiar with DirectX 9 your transition to 10 and 11 will be much harder.