Para programar en C/C++, lo primordial es ir conociendo bien los lenguajes, y para eso tienes muchos tutoriales, libros, información, etc.
Compiladores hay muchos, pero podría interesarte GNU GCC (que puedes encontrar para Windows como MinGW, un port de esa colección de compiladores, y en los repositorios de todas las distribuciones GNU Linux). Como entorno de desarrollo, en principio podría bastarte un buen editor de texto, pero me sumo a Code::Blocks, un IDE francamente competente, multiplataforma, extensible con plugins y muy configurable, para adaptarlo a tus necesidades. Si decides usar este IDE, te recomiendo usar lo que denominan nightly build (podrás descargar la última versión desde su foro). DevCPP es un IDE similar a Code::Blocks, pero exclusivo para Windows y cuyo desarrollo (en Delphi) está prácticamente abandonado (s.e.u.o.). Yo no lo elegiría.
Si tienes pensado crear aplicaciones de escritorio (con ventanas, controles, etc), te recomiendo las librerías wxWidgets, que te permitirán (entre muchas otras cosas) crear aplicaciones con la apariencia nativa de cada sistema operativo, sin apenas hacer una modificación del código. Si decides usar esa librería, tienes además una herramienta cojonuda para diseñar la interfaz de usuario, wxFormBuilder. Todo ello disponible para Windows, Linux, Mac OS, ... con comunidades de usuarios bastate activas, bastante documentación y lo más atractivo: de código abierto (es decir, sin necesidad de pagar licencias o de piratear nada).
Esas son las herramientas que utilizo yo tanto en Vista, Debian y openSUSE, como para crear aplicaciones nativas para Wii (configurando devkitPPC en C::B). Estarás usando exactamente las mismas herramientas independientemente de la plataforma en la que programes, y no tendrás que aprender de nuevo a usar otras distintas. Por otro lado, los programas que crees podrán compilarse sin apenas un cambio para la mayoría de sistemas operativos.
Un saludo.