Não que eu tenha lá muito conhecimento sobre, mas acho que consigo responder a essas perguntas:
Qual é o propósito em usar?
Assim, quando voce carrega um componete, e quer que ele tenha alguma informação de alguma api , voce pode usar o UseEffect para quando o componente for renderizado ele busque essas informações e atualize o seu estado, assim exibindo a resposta da api que voce queria, isso é util em varias situações, como buscar dados de um usuário ou algum registro aleatório
Por que usar?
acho que isso entra dentro de resposta anterior, mas um motivo é porque é amplamente ultilizado e há varios exempos que voce pode seguir
Tem alguma alternativa melhor? Se sim, por quê?
existem hooks como esse abaixo
https://tanstack.com/query/latest
eles tem alguns recursos a mais do que o UseEffect nomal