Any flavour of Linux will do, its advantagous to use an easy to install version such as Ubuntu so as to get going fast.
Get used to using the command line (if you are not already). You don't need advanced shell scripting just know utilities like grep, find, sed etc. (I was going to recommend a pocket guide here but I can't find it - sorry)
Programming wise, I think its OK to initially concentrate on C which is simpler than C++ and gets you used to pointers and the like. Many of the "gurus" in the Linux world refuse to use anything else!
The book I am recommending is "Beginning Linux Programming" Wrox Press, Neil Matthew and Richard Jones.
This book is not as beginner as the title says, but its good on Linux with examples of how to use semaphores, shared memory etc. + the example code is really short and easy to type in!
You might need a more basic C book before starting on this one.
the gcc compiler is also the the best if you using linux,ubuntu.i recommend it.
Also you can try to get a text book on starting out with c++ if u want to learn c++ first or you can start with C through "How to programme in C"