Welcome,
You seem to have missed the "Beginners" forum, which has a Topic about questions like yours. You can find it at
https://www.gamedev.net/reference/faq.php/_/for-beginners-r1
1.) What programming language should I use for game development? I know there are several variations of C, like C++ and C#, but I have no idea what the differences are and the advantages of each kind.
There is also a language called "C" :)
C and C++ languages are closely related. C is an old language for programming, it's quite simple, but very powerful. Big disadvantage is you have to write a lot of code to get anywhere. Second disadvantage (for a beginner) is that the language assumes you knows what you're doing. It doesn't guide you, and it doesn't stop you from shooting yourself in the foot. As such, not really recommended to start with, imho. C++ is C on steroids. Much less simple, much more powerful, much more easy to get yourself in trouble, and a very steep learning curve. Also not beginner friendly.
C# has nothing to do with C and C++. The name was a marketing trick by Microsoft. It's a totally different language. It's much closer to Java and Python. All three languages (C#, Java, and Python) are good for beginners. Python is a little simpler, but runs a little slower.
2.) Where should I actually write my code? I use Notepad++ for HTML and CSS and that sort of thing, but I don't know if this is what I should use.
Text-editor works, but you may want to consider switching to an IDE. Basically, it's a text-editor, but it knows the language too, so it gives you auto-completion, you can jump around to definitions and search for uses. I guess it's something you can try, and see if it works for you.
3.) What is a compiler and how does it work?
A compiler translates the text that you write, and converts it to numbers that the computer understands, so it can execute what you wrote.
The short explanation of how it works is "by magic", and that's mostly the level that you need in general. The longer explanation is that there is no magic involved, it is a sequence of taking your text, scanning and tokenizing it, parsing and type-checking comes next, and then you have a few code-generation and optimization steps, and you get a big bunch of numbers, which are generally known as "exe file".
I write these compiler things (small versions of it), and we can discuss it one day, but it helps a lot if you can do some programming first, so you have some idea of the context. Until that time, see it as a magic box that transforms your text into an "exe" file.
4.) Is there any program that you guys find useful for programming that I should have?
An editor that you like, and all sort of tools around it. For each task there are several options for all the major platforms. Different people have different preferences, and different tools are strong at different parts, so likely, you'll collect many tools :)
If you guys answer these questions, I would also love to have your advice for any small projects I might want to try. Also, information about other programming languages would be greatly appreciated.
The FAQ should answer this mostly, a commonly linked article is
https://www.gamedev.net/resources/_/technical/game-programming/your-first-step-to-game-development-starts-here-r2976
which has a list of game programs as well.
Lots of exploration to do! Enjoy!