I totally disagree with the very low level stuff. While you cannot program GUI's using C (you can with C++). C is extremely useful for backend apps. This past year I've written a mouse/keyboard driver, a backend GPS program, and a game entirely in C.
Well I would have said that a driver and a backend GPS program is all low level. Sure you can write an entire app in C, but why would you? Most modern games are written via scripting languages, a fair few of them now use C# as their scripting language or they have developed their own. The back end high performance stuff is written in a combination of C and C++, but the front end is normally via another language.
Also if you write for Gnome then you will write in C. Gnome is C based, sure there is a C++ SDK for Gnome but most people write for Gnome using C. So that is the main exception to C being low level. So you can write a GUI app with C, but as far as I am aware only Gnome is focused on C. Windows it would be C# and possibly C++, Windows Mobile is C# only (correct me if I'm wrong). Unix is mainly C, though front end will be C or C++ depending on which front end you use. I don't know about OSX.
But at the end of the day it is a question of what you want to do. C/C++ is fine for low level and some GUI programming, and by low level I mean drivers, back end integration with hardware, etc, but for business programming it is close to useless.
I would totally advise learning C and C++. C will teach you memory management skills, good programming practices and help you get a solid understanding of the basics for other languages (Java, C#). C++ is great for OO programming.
Well C++ may help you with Java and C# but C would help you as much as Javascript would. C doesn't enforce good programming practices, and I would argue that C++ is better than C in this regard, but still allows for slack programming practices. C# and Java both enforce stronger programming practices and are better for learning OO programming.
The other good thing about both languages is that their not OS specific like VB, C# or any .NET applications. This means you can port your programs to Unix, OSX or Windows (with little to no changes to your code).
Sorry mate but that just isn't true. C and C++ are compiled for a platform and you use SDK's available for that platform. For windows you use the Windows SDK's for gui development. The low level stuff is all different between platforms, etc. Unless you purposely write for a cross platform SDK then there is a lot of work to get an application running on OSX, Linux and Windows. From what I have heard the cross platform SDK's aren't all that perfect either. It is not a trivial task and requires a lot of effort when compared to Java.
Anyway, all said I have always enjoyed programming in C++, it's a language I enjoy that gives you all the power you need to get the job done, which Java, C# and the like take away from you (for a good reason). So if you just wish to learn programming for fun, then C and C++ are quite okay. Just don't expect to make a career from it.