I was recently doing some research on people new to game development for a possible project. A few questions cropped up repeatedly so I decided to answer them here.
What Engine or Library Should I use?
The links provide good descriptions of each engine/library. I'm not going to rehash the material here.
If I had to recommend one engine or library for people learning to develop games, I would recommend Unity. It's free until you start making $100,000(US) a year with your games. It runs on Windows and Mac. Unity is versatile, allowing you to make 2D and 3D games that run on iOS, Android, Windows, Mac, and Linux. Lots of people use Unity so there are numerous books, articles, and videos to help you learn how to use Unity. Unity also has a large asset store of tools, libraries, and artwork you can buy to speed up the development of your game.
When would you go with one of the other engines or libraries?
Use GameMaker if you want to make games without writing code.
Use Godot if you're using Linux, or you want to use a game engine and don't like Unity.
Use SpriteKit if you're interested only in making 2D iOS games.
Use SDL or SFML if you have programming experience and have no need for a built-in tool to create game levels visually.
Don't worry about making the wrong engine choice. If your initial choice isn't working for you, choose a different engine. Suppose you start with Unity and struggle with writing code. You can switch to GameMaker, which doesn't force you to write code.
The language you use to write your game depends on the engine or library you use. If you choose Unity, you're going to be writing code in C#. If you choose SpriteKit, you're going to be coding in Swift or Objective-C. GameMaker and Godot come with their own scripting languages. SDL and SFML have support for more languages than the other game engines and libraries, including C, C++, Go, OCaml, Python, and Rust.
If you read the last section, I said SDL and SFML are for people with previous programming experience, which means you already know at least one programming language. Choose a language you already know so you can concentrate on learning SDL or SFML.
The specific game you choose to make is up to you. I'm going to provide one piece of advice on choosing your first game to make. Start with a small game, something you think you could finish in a week or two.
Making games is difficult. You're going to make mistakes. It's better to make those mistakes on a small game than on a massive game.