<p>I'd like to know which method is recommended on Windows C programming: using malloc or the Win32 HeapAlloc (maybe VirtualAlloc?) function.</p>

<p>I've read the MSDN <a href="http://msdn.microsoft.com/en-us/library/aa366781(VS.85).aspx" rel="nofollow noreferrer">Memory Management Functions</a> article and the MSDN articles regarding malloc and HeapAlloc, but they do not say which one should be used and in what situations.</p>

Stick with malloc unless you have a compelling reason to use something different.  It will be implemented underneath in terms of the OS memory allocation primitives, but there is no real advantage in diving down to that layer yourself.
A few API calls I believe need a memory block allocated from a Windows heap, but you will know when you come across them.
Or if you want to do something more advanced, like use shared memory, or need to control the permissions on the memory pages directly then you will need to look at the Windows API calls like VirtualAlloc.