Todas as filhas herdam os métodos da classe pai.
Métodos privados não são herdados.
Métodos com visibilidade default (ou seja, que você não declara nada), são chamados de package private. Ele só vão ser herdados por classes do mesmo pacote.
E sim, se você tiver dezenas de subclasses, esses métodos serão herdados para todas essas dezenas.
No seu exemplo, você mostrou o conceito de sobreescrita. O java sempre chamará o método comerComida() da vaca. Mesmo que você faça:
Animal animal = new Vaca();
animal.comerComida();
O método da vaca será chamado. Se você logo em seguida fizer:
animal = new Galinha();
animal.comerComida();
Então o método comer comida da classe animal será chamado. Isso dá muito poder, pois você pode fazer uma subclasse implementar um método comerComida() mais apropriado para o animal em questão. O que realmente importa, no frigir dos ovos, é que “comer comida” realiza a mesma ação, a de comer e não exatamente como a classe faz isso.
Essa é a razão também de existirem classes abstratas. Você poderia tornar a classe animal abstrata e deixar o método comerComida abstrato. Ele ficaria sem implementação na classe animal!!! Afinal, não sabemos como um “animal genérico” come. Mas não importa, pq o que interessa é que “todo animal come comida”, e não como ele faz isso.
Nesse caso, tanto a galinha quanto a vaca seriam obrigados definir o método comerComida(). Uma subclasse não seria obrigada a declarar esse método a menos que fose abstrata também. Por exemplo, se uma filha de animal fosse Mamífero e tivesse o método abstrato mamar(), você poderia deixar para implementar comerComida() apenas na classe Cachorro, filha de mamífero. E seria obrigado a implementar também mamar().