Through my graphics programming adventure I've went in this order starting with immediate mode OpenGL (a little bit), then DirectX 9 first with the fixed function pipeline, then with custom shaders, then currently XNA for over a year, where I progressed a lot thanks to XNA abstracting away a lot of coding work. In total just over 3 years of 3D graphics programming. Now I've decided to take a jump into DirectX 11 to see if I can tame this beast.
I'm thinking about getting Frank Luna's book, Intro to Game Programming on DX11 but have a few concerns about it. Will the code only be optimized for DX11 hardware? I only have a DX10 compatible video card (Radeon HD 4670) which does great for the games I play. I know that newer versions of DirectX can support both DX 9 and 10 class hardware, but don't know if the code in the book would require a ton of re-work to get working right in my hardware.
Also, should I jump back with C++ or stick with C# and use SlimDX/Sharp DX instead? There don't seem to be many books on those frameworks.
I'm biased, I'm using SharpDX myself, but if you're more comfortable with C# at this point, I say just go with SlimDX/SharpDX. They parallel the native libraries pretty closely, and the underlying pipeline concepts still apply, so I covered a lot of ground just reading native library books and tutorials and finding the .NET version of the same functions to get things working in C#. Both .NET libraries have samples in their downloads/repositories that give you a quick view of how the same graphics devices are initialized. And the HLSL is going to be exactly the same, so when you get into shader programming you can definitely use non-c#-specific references.
Hazard Pay :: FPS/RTS in SharpDX (gathering dust, retained for... historical purposes) DeviantArt :: Because right-brain needs love too (also pretty neglected these days)
You can run D3D 11 on D3D 10 feature level so there is no reason not to learn D3D 11. Some features are unavailable at that case, but it doesn't prevent you from using most of the D3D 11 stuff. Learning D3D11 from clean table is good since it has some differences compared to D3D9.
Don't worry, I'm doing the same as you. Re-writing my DX9 engine in DX11 on my laptop with an Radeon Mobility HD3650, using Frank Luna's DX11 book to help the upgrade. All I've needed to do with his code so far is to change the minimum feature level to D3D10, and change the effect files to compile the shaders as SM4.0 rather than SM5.0. I'm relatively early in the book with implementing all the demos, however they all work fine so far.
regarding the books:
if you want to get an introduction into graphics programming using dx11 get luna's book.
if you want to get comfortable with the dx11 API get Practical Rendering and Computation with Direct3D 11.
Both books are really good, but the first one is more focused on learning graphics programming, than learning the API. I think the second one would fit your needs better.