Olá Roberto, tudo bem?
Essa foi uma dúvida que eu também fiquei há um tempo atrás.
Colocar o atributo required
funciona para que o usuário não envie o formulário sem algum campo preenchido.
Ao estuda sobre back-end, e sobre segurança do banco de dados eu descobri que existe um risco de apenas o usar o required
no HTML.
O usuário pode remover esse atributo através do console do navegador. Você pode inclusive fazer o teste no seu formulário, tirando os atributos manualmente e enviando, ai você vai perceber que o navegador envia o formulário.
Isso é um risco para a segurança do seu sistema, visto que o usuário mal intencionado pode enviar códigos maliciosos, ou os chamados SQL injection.
Apesar de mais trabalhoso aprendi que essa é a forma correta, que é o que as grandes empresas fazem.
Espero ter ajudado. Forte abraço e bons estudos!