Casey uses C++ not pure C. But he doesn't use all C++ features, just few useful ones - like operator overloading and few others.
To answer second question - Visual Studio C runtime by default expects entry point of your application be named WinMain if you are creating GUI application, and main for console application. That means that using "main" will get you text console open (like cmd.exe does) by default. You can change this behavior by linker flags (
http://msdn.microsoft.com/en-us/library/f9t8842e.aspx) But why do that, if you can name your entry point WinMain and as a bonus you'll get hInstance argument, no need to use additional call to get it.