Según sé no hay norma para hacer 'void' un método o hacer que devuelva un valor. Mas bien depende de tu forma de pensar o 'tu logica' como le llaman.
Yo ya se que void no devuelve valor
Creo que ahi mismo te estas respondiendo.
Pero a grandes rasgos, un metodo 'void' es un codigo (o fragmento de codigo) que necesita ser estar repetido en 'lugares' distintos del programa y en lugar de escribirse varias veces en el codigo del programa, haciendolo pesado, y mas dificil de leer, se escribe dentro del metodo y se colocan llamadas a este en los lugares que se necesite poner dicho codigo, cuando se necesite que la tarea realizada por el metodo se haga sobre variables o valores distintos algunas o todas las veces que se llame se le agregan parametros. Y un metodo que regresa valor, se parece mas bien a un sistema al que le das datos (parametros), los procesa y te da un resultado (valor de retorno) el cual asignas a una variable o haces una operacion sobre el.
Un uso muy comun tambien que le dan a 'return', es crear un metodo boolean, o sea que devuelve un valor binario (true, o false), y hacer que regrese true (return true;)en determiados casos, y que regrese false (return false;)en otros, por ejemplo en algun error, que el usuario haya cancelado la accion, o que haya pedido salir, etc...
A lo mejor con experiencia comprenderas mejor cuando se necesita el return o el void.