I'd suggest learning ANSI/ISO standard C before learning system dependent features. Then you know what is standard and completely portable (to any hosyted C implementation). Then you can branch out and learn things like POSIX extensions and other system specific programming tools. If you have prior programming experience, the second edition of Kernighan and Ritchie's book is the best introduction C, IMO. With less experience, I've heard good things about K. N. King's C Programming, A Modern Approach.
The stabdard Linux C compiler is gcc, which can easily be invoked from the shell.