Se você deve ou não instalá-los separadamente é uma questão complicada. Se você tiver um computador mais antigo com recursos limitados, afaste-se definitivamente das VMs e instale um sistema operacional em cada unidade. Por outro lado, se você tiver uma máquina mais nova com muita RAM (mínimo de 4GB se estiver executando o Windows 7 com uma VM) e uma CPU decente, então você deve estar bem usando uma VM para programação casual.
Dado que você tem que instalar ambos os sistemas operacionais, pessoalmente, eu iria com um em cada unidade (contanto que você não tenha pouco espaço em disco). É mais fácil de configurar e você obtém o poder total do computador para ambos os sistemas operacionais. Se você ainda estiver em dúvida, continue lendo.
Se você está procurando fazer uma séria programação em C na máquina Linux (não apenas desenvolver para Linux, mas realmente desenvolver em Linux), então eu escolheria sistemas operacionais separados, independentemente de sua capacidades do computador. Dessa forma, você obterá o uso total de todos os seus recursos ao compilar, etc. Além disso, se você tiver alguma idéia de usar o Linux regularmente, então faz sentido dar o seu próprio impulso.
Se você só trabalha no Windows (incluindo desenvolvimento), você só precisa testar a execução de seus programas no Linux, você não tem nenhuma intenção de fazer qualquer outra coisa no Linux, e seu computador é bom o suficiente, então você pode economizar espaço em disco e usar uma VM.
Dica na inicialização dupla:
Se você decidir instalá-los separadamente, instale o Windows primeiro. Dessa forma, durante a instalação do Linux, o grub / lilo pode detectá-lo e adicionar automaticamente uma entrada de bootloader do Windows para você.