Hi,
Coming to this website and getting involved in this community was a wise choice, so I welcome you.
I am a 2D and 3D computer video graphics artist specializing in the games and simulations industry with freelance Information Technology consulting on the side. Learning Java, C#, and game development are hobbies of mine which I plan to grow into a business. Some of my colleagues, associates, and friends are skillful coders (in C#, Java, C++, high level scripting languages, and web-based languages) CEOs, professors, consultants, game designers, game developers, artists, and consultants.
(Now i know, that XNA is definitely dead, because Microsoft does not develop it further...)
When a company stops developing a program or software - as long as it still functions well, then it is mature and not dead. The Software Development Life Cycle (SDLC) of XNA continues in implementation development such as Mono and other third party efforts. XNA itself will function full and well for years to come in Windows operating system. Though Microsoft does not directly develop and support XNA anymore, it continues to supply clients with everything that they need to use it and run it in Windows, such as runtime updates. This, again, will be the case for years to come. More than half the U.S.A population is still using WinXP, WinVista, and Win7, which will be the case for quite a while. This means that anyone using this should be encouraged to learn game development with XNA for a few years at least. Mono/ MonoDevelop platform is a very good and fairly up to date implementation of the technology. Also take a look at MonoGame.
As a developer and CEO of a company, to you I suggest being careful about labeling things as "dead".
For an experienced programmer and IT expert such as yourself, it makes no difference if you settle on C#, C++, or both - speaking in a general sense. With existing libraries, both languages are very capable of being used to reach from very high level to very low level functionality of a game. Performance is excellent with both if done correctly in coding and implementation. Quite a number of game engine and game developers use both languages, typically C++ to handle lower level optimizations such as mult-core/multi-threading and memory caching, while C# is great for scripting or general game functionality.
I recommend to everyone that they create their own games for at least a couple years before trying to make their first game engine, but most should probably never begin game engine development. There are many quality game engines in existence and more to come! "Why reinvent the wheel?" is a common and legitimate question asked in these game development circles in regard to game engines. A comprehensive game engine usually takes 5 to 20 years to mature from beginner to completion and developing games will add years by themselves.
Since you are a very busy person in the software industry, you likely don't have time right now for anything other than learning how to develop games. Make 3 to 5 simple practice games using an existing game engine. Choose a game engine and use its main language. I recommend Unity 3D (originally deriving from Mono), Unreal Engine (UDK), or Torque 3D to you for cross-platform, large community, extensive updated libraries, tutorials, and no cost or little cost art assets to get you well on your way in good time. You have the coding and programming experience to use these in creating fun games at an accelerated pace.
Here is a list of some of the more popular game engines:
http://en.wikipedia.org/wiki/List_of_game_engines
SDKs - At least one of these will be used by you in game development or game engine development eventually.
These are not called Software Development Kits for nothing. As the name implies, they do not focus on the art aspects of game development but rather the coding aspects. These may target a runtime environment such as Common Language Runtime (Windows mainly), Java Runtime Environment (operating system cross-platform), or Mono Runtime Environment ( an operating system cross-platform implementation of CLR ). They also may use and/or include APIs for the hardware cross-platform that you are seeking, being OpenGL, Direct3D, or Mono, as well as other APIs for sound, device input, networking, servers, and so forth. Note: APIs typically are low level handling of coding and directly impacts hardware issues such as graphics.
SDKs are typically kits which focus on at least one native low level language and maybe few scripting languages. Support for advanced game art creation in the form of editors and specialized game art tools may be limited from an art creation viewpoint. However, almost all of them support very well the import of art assets from common graphics programs such as 3DS Max, Maya, Blender, and so forth.
If you want to become an independent game developer, then create games with an existing development platform such as SDL, SFML, Mono/MonoDevelop, or SharpDX, especially if the games are not going to be art intensive because you are not an artist. They do support your development toward game art goals of the future if you eventually need them, being scalable according to plug-ins and your coding skills.
An SDK is an excellent compromise which provides most of the low level coding for you to focus on customizing existing code and creating proprietary game source code on top of the platform. Games made with such an SDK can be programmed to allow the end user to download and/or install the necessary runtime libraries if the game installer detects that the client does not have the runtime installed yet or it needs updating. Important: End-user license terms and agreement must be displayed and agreed by the gamer for all software and libraries according to the license terms of agreement, including third-party ones. This is a great saving in coding effort provided by the best SDKs, accelerating your game development by months. Having the low level coding libraries mostly provided to you to customize saves you years in development time and money. They also provide all the technical documentation and license agreements which is part of the time and effort saved. Very supportive communities further shorten the development cycle.
Game Engines
As the name implies, these are systems of game development aimed at games mostly and not the other coding issues such as making your own graphics, physics, sound, scene graph, or other coding intensive underlying areas. Plugin alternatives often exist. Libraries, including terrain editors and character animation editors or plugins are provided for you. All of these utilities are specially designed for game design and art creation pipeline flow for maximum efficiency, saving you years in coding your own libraries. Sure, you can usually customize those things all that you want, but it will take years in its own right to mature.
If the game concepts in your goals are art heavy, then you would be better served with a game engine like the ones I recommended which attract many skillful game designers and artists. These will require that you form a team and delegate areas to members. They are proven most attractive to everybody involved if you are a good team leader. The most is achieved in the shortest amount of time with a good game engine.
APIs
On the other hand, if your goal is to create your own game engine (5 to 20 years includes your first successful game as well) and launch your games off it, then I highly recommend an API. OpenGL and existing Software Development Kits (SDK) for it are among the most efficient for implementing across hardware computing devices. In fact Java and the Java Runtime Environment or directly targeting OpenGL are the most efficient for hardware cross-platform implementation, for example created software to run on computers with any OS and also iPhone/Android mobiles. This is a great choice if your games will be more coding intensive than art loaded. As an alternative, many game engines include tools for working with an API such as OpenGL for hardware cross-platform implementation. For being able to run your game in a computer and also a most mobile devices, OpenGL API is very common.
Summary
Creating and publishing your first successful and profitable game might take years. Developing your own game engine will add some years to the release of your first comprehensive game. A good and popular compromise is to use existing libraries (such as GUI creation editors, physics, device input, and so on) which come with an SDK, such as Mono ( Remember that hardware and OS cross-platform Unity 3D was initially derived from Mono, for example, showing the potential. )
To start totally or almost from nothing, then you need an IDE (Integrated Development Environment) such as Java IDE, Visual Studio, Eclipse, SharpDevelop, MonoDevelop, or other. Assuming that you are an expert in coding, then writing all that physics, sound, editors, encoders, GUIs, input device application, graphics, networking/server, and special tools with take at least 5-10 years in my opinion, but maybe 10-20 for a beginner. If you compromise with libraries in these areas which are designed to be used with one of these IDEs (perhaps only by plug-in for the IDE), then you are still looking at 3-5 years to develop your own game engine which is complete and ready for a team.
Team Required for professional results in only a few years:
Game engine development, using an existing game engine, relying on an IDE, SDKs, and APIs for low level coding, and creating several of your own major libraries - all demand a team for company success (unless you intentionally want to create legacy style simple games or games so easy to develop that a student could do it, such as "arcade games" or simple mobile device games).
Game development or game engine development each take years alone. Being a solo game developer adds more years from beginner to pro release of a profitable game in many cases. A team with good chemistry will save years, money, and pain, while adding to the gross sales and profit rate potential.
Recommendation to You:
OpenGL used with an SDK (if you are a solo developer making simple games, want to create much low level coding, or art assets are light)
=or=
OpenGL with a game engine (if a team will be formed and/or art assets are heavy in the game design)