I'm not 100% sure why this topic is causing me to want to respond and express my opinions so much ... but ... here goes:
Background - I am not currently a game programmer and have not been a game programmer for over 15 years. Back then I used ASM (3 months), then ANSI C (9 months), then C++ (3 years) to create embedded gambling games (like quad 6 lotto, blackjack, etc) ... my last game project was a Direct X 5 2D 8-line slot machine running on an embedded intel i815 chip around 2000. I then worked in embedded audio using C++ for 3 years. And then I sold out / went corporate and started writing database backed, server based C# web applications - which I have done very successfully for about 12 years. (I've also used perl, ruby, lua, javascript and others). I have played with Unity, XNA/monogame, SDL, tao and about 5 other pretty much dead libraries through the years.
* There is no right or wrong language (except ones almost noone is using - where you can't find help)
* There is no right or wrong library or platform (except ones that are no longer supported)
HOWEVER, NONE of the current languages, NOR libraries/engines, NOR game types are even REMOTELY like each other when you think about the following:
* Community culture
* Initial experience when not having a mentor
* Availability of online materials and support
* Availability of print material and support
* Most likely directions to take for "successful" experiences
* Number of hours to expect to spend before you know you are making progress or perhaps should change direction
* Ability to get something satisfying done quickly if you want to make PLAYABLE games
* Ability to get something satisfying done relatively quickly if you want to learn to be a "real programmer" (TM)
* Ability to translate the beginner experiences and learning forward into real jobs
* Ability to use the early experiences to contribute meaningfully to indie or beginner unpaid projects
* Ability to translate your experience forward onto other languages or platforms
* Ability to translate your experience forward onto a long term career as a professional software developer (not necessarily making games)
And by way of specifics:
* C# and Javascript are WAY WAY easier languages for starting programming in than C++ (although both are far more complex now than they were 5-10 years ago)
* C# and Javascript are the 2 languages most likely to get a junior programmer hired as a professional programmer, followed by Java and Objective-C (in nearly any industry except games)
* C++ is far and away the most dominant language used by the software and engine developers for AAA titles, C# with Unity is working to close the gap
* Mobile games are primarily built in either native Objective-C (ios) or Java (android) or on javascript based cross-platform engines.
* C# and Java are the 2 most dominant languages for colleges teaching computer science, and are very similar. Both were very simple 10 years ago, but both have become quite complex over the years. Javascript is the 3rd most common CS degree language.
* C and C++ are 2 of the only remaining languages that are still in heavy use that normally require manual memory management (although smart pointers do exist) and teach good low-level programming fundamentals if you want to do things like write device drivers, graphics or physics engines, operating systems, IoT devices, etc.
* Almost no-one outside of games or embedded systems pays anyone to program in C or C++ below the Senior Developer level of experience (in other words, its hard to get started in these career paths, but you can make great money once you are a proven expert).
* Anything you are doing that you are having fun doing, while also learning something, is always the "right" way to do it ... and what is "fun" is impossible for someone to predict for you.
* I recommend C# if you want to program (in general) - or if you want to make games quickly and not take years building "engines". I recommend C++ if you have more fun with the idea of programming than in the completion of actual programs and would like to tinker with core things until you understand them deeply.
* I recommend things like XNA/monogame, SDL, or other simple frameworks if you want to mess with simple 2D sprites.
* I recommend Unity if you want to work with 3D stuff in the next 2-3 years (cause 3D game engines are CRAZY HARD and C# with Unity is just about the easiest to get started with).
Good Luck