Creo que tu duda sobre la utilización de 'void', se refiere a que algunas veces se utiliza eso en la función principal 'main ( )', mas no en las funciones personalizadas. Con esto quiero aclarar que los otros usuarios 'scrolling', 'Rootk' y 'Hager', tienen razón en lo que dijeron, pero ellos se refirieron a las funciones personalizadas.
Si en lo anterior estoy bien, entonces; cuando escribes:
main ()
{
...
...
return 0;
}
le estás diciendo a tu programa que si en la función principal no se regresa ese valor, se marque un error de ejecución, ya que hubo algún error en el programa. Pero cuando utilizas:
void main ()
{
...
...
}
el programa cuando tenga un error de ejecución, no le importará ese error y no marcará nada.
Espero esto te haya aclarado tu duda.
Hasta luego