As I understand it, you wanted to know how people got started, so here's my story.
The way I started out was, at
http://www.cprogramming.com/ and read their basic tutorials on c++ (for console applications)
I did that as preparation during summer vacation for a basic (basic as in easy, not the programming language
) programming course at school later that fall. I also got some PDF books, I think one of them was this:
http://www.amazon.com/Sams-Teach-Yourself-...f/dp/067232072X
But if I remember correctly.. I never finished it.
Anyway, so once school started, it was basically too easy for me. Everything we got to learn in class I already knew just by what I had read earlier on cprogramming.com .. (because, the truth is.. once you understand how to use variables, if, else, switch case, while, for and functions.. you can actually do quite a lot. and even more once you learn how to use arrays and structs) so the class was very easy for me and didn't require me to work very hard either because of that.
The next year, we were to study more advanced programming (two different courses) but there was a change from C++ to Java.
The three Java books we got were all very good and it was nice to get something graphical with swing and JOption compared to just a boring console application. (Unfortunately, by a Swedish author and not translated so I can't recommend it, but I'm sure there are books just as good in english.
)
It was also very easy for me, probably because I've always been very interested in programming and I tend to understand everything almost instanstly.
In between the C++ and Java courses, I had bought a GP2X. I found the mentioned lazyfoo tutorials and tried to hop on SDL. i found it a bit difficult at the moment, and thought it was a lot of code most of the time. (but in reality, it only looks much because of the way he writes his code safe and checks for everything to be initialized without errors)
Either way, I did try some of his tutorials and did manage to get it working, but I felt it was a bit too much for me at that point.
So that's when I discovered .. Fenix!
Now, Fenix can be _very_ easy to get started with for a first game project, has built-in functions for most of the things you need to easily create something graphical to run on windows or gp2x and I highly recommend it.
As Ruckage also mentioned it's available for many platforms (such as Windows, Linux, GP32, GP2X, Wiz, Dreamcast and others) and off-topic, the mac version isn't that great and the last binary is very old. I've tried to compile a 0.92 version but I can't get the configure script to find SDL_config (none seems to exist for mac)
Anyway.. I can tell you that by reading the basics at cprogramming.com and using the Flamebird IDE for Fenix which has a box popping up as you write with different commands and reading how fenix syntax works and checking some exemples here:
http://fenixonfire.gp32x.de
By using only the above, I could experiment and make a first game in Fenix EASILY. What helped me the most was the Flamebord IDE however as I could browse a list of what to write.
I found such as "set_mode", "put_screen", "load_png" and so on.
And before I knew it I had loaded an image of a placeholder sprite to a screen of 320x240 and allowed myself to control this with help of the arrow keys. And it was as easy as downloading Fenix for the GP2X and modify the included example scripts to get it working on the GP2X!
A note.. a graphical hello world with text scrolling from the left side of the screen to the right side.. is only about 5 lines of code.
And what I mentioned above, loading an image file and drawing it to the screen and allow the user to move it left/right, add a background image and some music.. Is less than 30 lines.
After that, I just kind of built on that game, it's amazing how much you can do in Fenix with only very basic programming knowledge.
Since then, I've studied some more Java and C++, and I have used SDL and it's not too hard for me anymore.
I've also tried out Allegro and also done some PSP programming (again using SDL) and for Nintendo DS by using PAlib. (which is almost as easy as Fenix)
I do know how to write object oriented in Java and C++ .. But out of lazyness and old habit, I keep writing code the "bad and old way" :unsure:
I still stick to Fenix (and for NDS PAlib) because.. I will only make simple 2D sprite games.
From Atari-style games to SNES or GBA-style as the most advanced I can think of creating.. Fenix is capable of doing that just fine and very easily.
And as of yet I haven't stumbled upon any limitations of the language.
http://www.fenixdocs.com/ is also a great help sometimes when you make games in Fenix and don't know how something works.
http://sourceforge.net/project/showfiles.php?group_id=103691 Flamebird IDE. (I use MX, can be buggy sometimes)
http://sourceforge.net/project/showfiles.php?group_id=2714 Fenix Project. 0.92a would be the version to get for ufxi for GP2X. (Wiz use this version too?)
Good luck.