I'm not a fan of applying the OO mindset universally as it happens
OO obviously shouldn't be applied when not necessary. However in almost all areas of game development, OOP is extremely important.
For example, when I first learned Blitz3D, I was a strictly procedural programmer (didn't know OOP). But when I saw how Blitz3D's entity system worked, I was amazed by how much sense it made and how easy it made things. Later, I found out that Blitz3D's entity system is simply a procedural implementation of OO techniques; namely Inheritance and Polymorphism.
If you like Blitz3D's entity system, chances are you'll like OOP. Of course, OOP is always a difficult concept to learn properly (and I've seen OOP horribly misused where code is more complex, rather than less complex), but once you do, your programming is made alot easier.
What exactly does C#/XNA have over, say, C++/OpenGL (or even C++/D3D or C#/D3D)?
I'm not sure, but it appears to me that XNA is a lot easier than pure DX or OpenGL, but not as easy as something like Blitz3D or Ogre. If I was in your place, I would use something like Ogre, since it provides all the 3D features you need while being easy to use. In fact, I am in your place, and I am using Ogre ;)