You can use any text editor you want to write C code, provided there's a compiler behind it to compile your source code into some sort of executable.
I only use MS Visual C++'s development IDE because it's (honestly) simply the best, eye-candy, fully-featured, time-saving source code editor available. You can get cheap licenses for it if you're a student or by asking a relative who works in education, since educational licenses for MSVC are WAY cheaper than standard licenses.
About Linux, check the thread "I'm switching over to Linux, got a few Q's" started by botmeister in the C/C++ coding discussions forum.
I personally choosed to develop on Windows for 2 reasons: first, the availability of the MSVC editor
- and second, that all the games I code for are natively running -and made to run- on Windows first. I hack the code, I compile, I hit a button and poof a listenserver starts up with my bot DLL attached and I can debug it right away. Quite valuable.
C/C++ programs are generally portable between Windows and Linux. However the problem with game programming is not YOUR code, the problem is in the code your DLL will include from the SDK. There is VERY platform-specific code in the HL SDK, that won't allow you for example to compile your code natively on any other compiler than GCC 2.95.3 (with the latest metamod patches), or if not, on a prehistoric compiler. But generally, apart from low-level routines such as directory searching or (obviously) Windows API specific calls, your code should compile and run fine on Windows and Linux. A good C book will teach you what are the facilities that belong to standard C and which are the ones that are platform-specific (put it simply, if you don't find reference for them in your book, then it's platform-specific and you should avoid it like the plague).