XNA is a great choice because you have all the rendering power of DirectX with managed code. If you want to use DirectX or OpenGL you have to use unmanaged C++ code (low level) which is far harder to learn/use. As for books there are a lot of great ones:
-Beginning DirecX11 Game Programming by Allen Sherrod and Wendy Jones(Course Technology)
Hope this helps.