I've been able to find several free tutorials and even a couple of free books on DirectX9, but almost nothing on D11, so I'm curious; if I start out learning DirectX9 would DirectX11 still follow the same rules and just have some improvements, or are the changes so large that I should just skip DirectX9 and just go straight for 11?
How much backwards compatibility is there? (would a program that I write for 9 still work in 10 or 11?)
I'll field this one--
DirectX 9 was the first iteration of DirectX which allowed for a programmable pipeline (using the shading language called "High Level Shading Language" or HLSL for short). Because this was a burgeoning technology at the time, most references you find will be fairly sparse on using it and, especially for beginners, will likely spend the majority of their time on using the Fixed Pipeline (which avoided this new shading language and simply allowed you to toggle settings).
Fast forward to DX11. In the wake of more advanced GPUs, the burden of handling shading has largely become a runtime compilation event. Shading Languages such as HLSL have grown from "a potentially valuable approach" to the only approach. DX11 has completely stripped out the Fixed Pipeline, expecting users to master the basics of HLSL and trusting that the performance and optimization gains are worth it. You can imagine how this might crimp your ability to transfer from 9 to 11.
TL;DR -- DX9's common approach to shading doesn't exist in 11, you'll probably end up relearning it.
For even more fun "WTF have I gotten myself into" here's a migration list to see just what changed: