Most people buy their C compilers, but there are free ones out there on the Internet. This page is not dedicated to the free ones, it's just that I don't have any relevant links to the commercial ones (yet).
If you're going to obtain one of the free C compilers below, then you should choose based on which platform you're programming for. Cygnus Win32 (which was still in beta at the time of writing) is for Windows '95 and NT programming (hence the name), whereas DJGPP is for writing 32-bit DOS-extended programs (e.g. games!).
The C compiler is a port of GNU C, and comes with all the Unixy header files. I think you can access Windows API functions with the compiled code. You can certainly write DLLs with it. As you can probably tell, I'm not entirely sure what it's capable of. It's probably best to look at the project's home page:
DJGPP has grown quite a lot in popularity recently, if activity in the newsgroup is anything to go by. This could be due to the fact that the compiler is free, and everyone in the newsgroup is friendly and gives useful advice. Another factor could be that Quake was written using DJGPP.
Being a port of GNU C, it is a Unix-style thing. So, you have to write makefiles rather than have some IDE do it for you. However, an IDE for DJGPP called RHIDE came out recently, so it looks like DJGPP is getting friendlier.
DJGPP FAQ
(www.delorie.com)
DJGPP FAQ
(www.rt66.com)
DJGPP newsgroup (comp.os.msdos.djgpp)
3D for DJGPP v2.x and Allegro v2.x
DJGPP Mine
Impulse's DJGPP page
Nathan Kopp's DJGPP
Page