As entradas para /etc/hosts não são "inclusivas", portanto, sua adição de example.loc não inclui www.example.loc (ou qualquer outro subdomínio) também. Então, o seu navegador tenta encontrar www.example.loc da maneira usual, que é perguntando ao (s) servidor (es) de nomes que você configurou. Mas é claro que nenhum servidor de nomes sabe nada sobre esse domínio. Seu Apache local nunca entra em ação dessa maneira;)
Como observação adicional, adicionar nomes a /etc/hosts dessa maneira pode trazer problemas também. A linha 127.0.0.1 example.loc provavelmente substituirá a linha 127.0.0.1 localhost , portanto, você poderá obter problemas ao resolver localhost . Você pode atribuir vários nomes a um ip em uma linha, então o caminho correto seria
127.0.0.1 localhost example.loc www.example.loc