Duvida sobre classes e utilizacao

uma duvida muito basica, quando eh feito um programa com quantas classes quanto necessaias, apenas uma delas tera o metodo main: mas como saber qual delas devo utilizar o metodo main? faz alguma diferenca se o metodo main estiver em qualquer classe do pacote?

Sim, faz diferença porque o método main é o método principal de uma aplicação. Ela que “carrega toda a aplicação nas costas”, digamos assim.

Se você cria uma tela com menus, que chamam outras telas, você coloca o método main na tela de menus, pois é por essa tela que a aplicação será iniciada.

Se você fizer uma classe, sem o método main, simplesmente sua classe não será executada.

mas se por exemplo eu desenvolver um programa com 10 classes, como defino qual delas usara o metodo main?

Não é regra… se for um jar você pode no manifest dizer qual o método main.
Você também pode dizer no launcher (seja script ou launch4j por exemplo) qual o main será utilizado.
O main é o ponto de partida e ele que será o responsável por carregar o restante da aplicação (como já foi citado, ele quem carrega a aplicação nas costas).

Neste caso você pode ter diversas classes que tem métodos main, por exemplo para funcionalidades diferentes ou ainda para realizar algum teste especifico (embora o mais recomendado para isto é fazer um projeto de teste unitário), mas já vi diversos softwares livres com muitos métodos main espalhados para realizar testes de pedaçoes da aplicação.

A classe que usará o método main é a classe que vai iniciar sua aplicação. Vamos supor: um jogo de video-game. Você vai colocar a classe main na tela de apresentação (aquela tela que tem o nome do jogo, opções arcade, versus).

Você não pode colocar a classe main na tela de seleção de personagem, porque você não quer que seu jogo comece na tela de seleção, certo?

Qual programa você quer ou pretende desenvolver?