It's basically a choice between 9 and 11 these days.
If you want to support Windows XP then use 9, otherwise use 11.
DX11 has "feature levels" that allows you to use it in different ways, to support different types of hardware.
Dx11 set to use D3D_FEATURE_LEVEL_9_* supports D3D9/SM2 level hardware.
Dx11 set to use D3D_FEATURE_LEVEL_10_* supports D3D10/SM4 level hardware.
Dx11 set to use D3D_FEATURE_LEVEL_11_* supports D3D11/SM5 level hardware.
10/11 removed the fixed-function pipeline, so these days you need to learn how to write shaders in order to use them, so you could say they're more complicated.
However, you could also say they're simpler, because 9 always had 2 (or more) ways to do everything, due to it supporting both shaders and fixed-function...
I'm not sure if it's even possible to get an official SDK for DX8 and earlier from Microsoft any more.
Edited by Hodgman, 06 January 2013 - 12:19 AM.