In my case I am re-learning DX from earlier experience of the FFP days, and am using XNA Game Studio 4 to do this - since this only support up to DX9 I can't take advantage of the DX10 API. Using deferred rendering and HLSL isn't a DX10 exclusive thing, and DX9 doesn't equal FFP, so I think the XNA/DX9 route is a valid way to learn. I know there is a shed of stuff (geometry shaders for instance) which look really good in DX10, but I figure that the DX10 feature set (not API or programming model) is going to be a superset of DX9 so learning in a easy DX9 toolkit like XNA wont tell you how to write a game/3d program structurally, but the techniques will be readily adaptable.
I'm a .net guy and I've looked into SlimDX and SharpDX and they look very much like the old MDX implementations (i.e. a wrapper on DX), and I've gradually moved my learning project away from the XNA Game Pipeline into purely using the XNA namespaces and API to do rendering. I reckon thats a valid technique for a newbie. SlimDX/SharpDX are nice looking but for all its faults, and doubtful future, XNA does have a lot of historical resources behind it, whereas if I wanted to learn about the other two, I'm basically back to trying to interpret the C++ API documentation.
Just my pov