O foratributo associa o rótulo a um elemento de controle, conforme definido na descrição da labelespecificação HTML 4.01. Isso implica, entre outras coisas, que quando o labelelemento recebe o foco (por exemplo, ao ser clicado), passa o foco para o controle associado. A associação entre um rótulo e um controle também pode ser usada por agentes de usuário baseados em fala, o que pode fornecer ao usuário uma maneira de perguntar qual é o rótulo associado ao lidar com um controle. (A associação pode não ser tão óbvia quanto na renderização visual.)
No primeiro exemplo da pergunta (sem o for), o uso da labelmarcação não tem implicações lógicas ou funcionais - é inútil, a menos que você faça algo com isso em CSS ou JavaScript.
As especificações HTML não tornam obrigatório associar rótulos a controles, mas as Diretrizes de acessibilidade de conteúdo da Web (WCAG) 2.0 o fazem. Isso está descrito no documento técnico H44: Usando elementos de rótulo para associar rótulos de texto a controles de formulário , o que também explica que a associação implícita (ao aninhar, por exemplo, inputdentro label) não é tão amplamente suportada quanto a associação explícita via fore idatributos,