Python, Shell Scripting, how to use the Coreutils tools. Pick VIM or Emacs (or anything else).
To get started take a look at this: http://www.funtoo.org/wiki/Linux_Fundamentals,_Part_1
If you are interesting in kernel dev, read The Linux Programming Interface and learn C: http://shop.oreilly.com/product/9781593272203.do
You can also build LFS (Linux From Scratch).
Yes, of course. For a "quick" overview which covers the fundamentals in a marvellous way, delving into some really appreciated detail at various points, read "How Linux Works: What Every Superuser Should Know".
For a longer overview, read "Running Linux" by O'Reilly. It's outdated at some points (like the X11 chapter, or maybe that's because my Arch install is too bleeding edge...) but definitely worth the read.
Now, if you want to get real serious about learning how Linux works, read the almighty de facto Linux bible: The Linux Programming Interface. That is the go-to manual for any Linux engineer. It explains all of Linux in extreme detail, even going to the point of showing you all the C code behind what makes it work and how to use Linux's ABI (syscalls and such) to write Linux low-level applications. It's well over a thousand pages so I think that should have you covered for a while!
The GNOME project has devhelp, which acts as a documentation browser and search index for the GNOME family of libraries and their language bindings (GTK, Cairo, Pango, GStreamer, PyGTK, and so on). It would probably be a good starting point for extending to include other documentation.
Oh, and the order would be more like this:
1) Bash
2) C
3) Improve Python skills, especially in the server side web world (HTML forms processing, etc...)
"The Linux Programming Interface" will teach you a lot about the Linux kernel. "The C Programming Language" by Dennis Ritchie will teach you about Linux/UNIX programming as most systems stuff is in C.
--Books-- Ada95: The Craft of OOP (good for learning the basics of programming, also free, http://www.it.bton.ac.uk/staff/je/adacraft/), The Linux Programming Interface, The C Programming Language, Beginning Algorithms (Harris and Ross)
--Languages-- I recommend that any Linux novice learn Bash, C, and any other language of your choosing (popular: Java, Python, Perl, Ruby, PHP, Lua, Ada). No matter what people may tell you, C makes money. Bash is so useful you can't afford to NOT learn it. I would also recommend looking into a few libraries to be used with languages, for example Ncurses, Dialog, GTK, Qt. Knowing databases is also useful (MySQL, Oracle, SQL Server, PostgreSQL, FirebirdSQL, etc...).
--Websites-- You're already on the biggest. IRC is good, look into lurking at ##programming on freenode.
Linux from scratch would be a good place to start. It guides you into compiling and creating your own Linux-based OS, so you know what each part of the OS does. There are other variants of it which you'll find on that website that you might also find helpful. The PDF / HTML versions are available for free on the site.
Take care, trying to learn about everything is quite large and could lead to know nothing (Jon Snow).
Nevertheless, The Linux Programming Interface could be a start. Its covered a lot of topic and Michael Kerrisk is a great writer. (for tech books)
When a topic seems interesting, try to specialise a bit.
Oh; Print the doc from Brendan Gregg on the Linux Performance Observability tools. http://www.brendangregg.com/linuxperf.html
The compiler doesn’t search $PATH, it searches directories included with -I on the compiler’s command line. Take a look at this for a good starting point: https://www.kernel.org/doc/Documentation/kbuild/modules.txt
Here's a link to that book on kernel drivers (for others out there). Both of those O'Reilly books have been very helpful in understanding the background.
As for hardware, recently I've been developing drivers and modifying the kernel for the Zedboard and Microzed. Of course, you probably don't want an FPGA as well to deal with. I know there are a lot of ARM dev boards out there and those could be good starter platforms. Having a nice low power board also lets you dink around in just baremetal code (ie no operating system, just your code). Personally, I'm waiting for the Jetson TK1 to start shipping. I can't wait to start playing with that!
Oh, this was also pretty interesting. I think learning how to manage interrupts would be fantastic.
Did you try GLFW? Here is the site -> http://www.glfw.org/
I've been using it for quite some time now with my openGL programs and I'm completely satisfied. It's extremely easy to use and if you have any problems understanding the docs you can take a look at the samples as well -> https://github.com/glfw/glfw/tree/master/examples