As duas expressões referem-se ao tempo. Não há diferença em sua pronúncia, mas as escritas trazem significados opostos. Enquanto uma diz respeito ao passado, a outra relaciona-se com o futuro.
Há anos
Usa-se o verbo haver para se referir a um tempo passado ou decorrido. Ele pode ser trocado pelo verbo “fazer”. Exemplos:
Há mais de um mês não vejo meus pais = Faz mais de um mês que não vejo meus pais.
Me formei há cerca de 10 anos.
OBS: Os verbos haver e fazer, quando estão indicando tempo passado, não devem ser colocados no plural. O haver também não vai para o plural quando adota o sentido de “existir”. Exemplos:
Havia dois meses que não chovia naquela região do interior. (Forma incorreta: “Haviam”)
Houve problemas na porta do estádio. (Forma incorreta: “Houveram”)
Ontem fez duas semanas que as provas foram realizadas. (Forma incorreta: “fizeram”)
Naquela sala havia muitos alunos sem o material da aula de Matemática. (Forma incorreta: haviam”)
A anos
Já a preposição A é empregada na indicação de tempo futuro. Nesse caso, não pode ser substituída por “faz”, e em geral vem precedida da expressão “daqui”. Exemplos:
O lançamento do satélite ocorrerá daqui a dois anos.
Viajarão para a Europa daqui a três semanas.
Veja outras dicas sobre a Língua Portuguesa na página S.O.S. Português