I suppose that XNA vs the world ( aka OpenGL and DirectX as real alternatives ) can easily look like a religious question especially when targeting a new developer, but i find that the right adjective for XNA is simplified and not powerful.
XNA is a subset, someone can argue that, but in the end is just a subset of DirectX, this framework is well suited for small project and not for serious gaming.
You have also to consider one aspect both C# and XNA ( or DirectX ) are technologies that are available only on Microsoft platform, this is important to stress, my point is that today Microsoft is not a big player in the industry, if you consider on how many platform you can make games, including desktop and mobile, you will easily realize that Microsoft is simply struggling in the market and more and more Microsoft will see its own market share resizing to a smaller size.
I personally believe that C# and DirectX/XNA will have a really hard future, i think that during the lifetime cycle of Windows 8 many many people will realize how bad their choice was about the language to adopt as main language, C++ is much more suitable for the performance, for the business and for cross-platform compatibility.
I do not want to influence anyone, just propose my idea, my points are:
- Microsoft will become a small player in the future, even smaller than it actually is ( even Bill Gates has been selling a huge part of its own Microsoft shares before the Windows 8 launch, we are talking about 20.000.000$ in shares and this is only what was happening in July, just in 1 month(!) )
- The gaming on MAC and Linux is not a rare thing anymore, even Steam will launch its service for Linux by the end of the year
- C# is a weird creature, and without spending too much words about this, is just for Microsoft platforms and doesn't offer cutting edge performance honestly, i don't see the point about adopting a language that is for 2-3 devices and doesn't even have a real edge on performance
- if you choose C++ you will program almost anywhere, desktop and mobile, also the real developers just use C++ for the biggest part, you can also program on the platform where C# is available, Xbox, PC and Windows Phone 8 ( from WP8 Microsoft will support C++ on their phones ).
- Microsoft has one of the worst royalties system ever, most of the times you don't even have a chance to know how much you are selling.
If you ask me the language for you is the C++ because learning C# or C++ is the same thing for a newbie, it's always a new language, but what the C++ can offer the C# can only dream about it; you also will develop a real know-how that you can spent on as many platform as you want and on all levels, from small games to serious development.
The last part about what framework you are supposed to learn, again, i will go for the most business friendly and the best choice as an investment these days is OpenGL with a programmable pipeline approach and this means OpenGL 3.0 and above.
I should also remark the fact that OpenGL is a rendering technology when DirectX is a complete framework oriented to all the main aspect about multimedia, but the thing is that today there are frameworks available for every purpose that you have in mind, most of them are free and really well tested, with an history of several years of testing and they are really reliable, they are also cross-platform and with a really good license most of times if not in every case.
As soon as the OEMs will stop installing Windows on their machines, and most of them already do that in practice, just see the market share percentage of Windows Phone, the entire Microsoft ecosystem will collapse and just looking at what is now, it's not that good anymore. Look at the marketplace, Microsoft has a marketplace by years until now and there is absolutely nothing, it's empty compared to what you can find on the marketplaces of the competitors. Look at the technologies, C# lives thanks to the web development, if it was for Windows Phone 8 development it were dead by years; Silverlight is a big flop, find 1 technology that Microsoft has introduced recently and see how good is performing on the market, even Internet Explorer have lost its throne.
I know that most of the people that will read this, especially advanced and senior developers, will get this as a ranting against Microsoft, but when even the founder doesn't believe in its own Corporation that is performing so badly before an important launch, that is losing important assets and presence on the market on every field, i think that you just have to consider the facts.
recap: go for C++ and OpenGL 3.0+ and you can code anywhere.