Este livro de Mia Couto foi publicado há dois anos atrás. Certo ou errado, do ponto de vista linguístico?
Errado!
O verbo haver serve, como o verbo fazer, para nos referirmos ao passado. Assim, são sinónimas as frases "Foi há dez anos que lá fomos" e "Faz dez anos que lá fomos". Deste modo, tal como é desnecessário o uso da preposição atrás na segunda frase ("Faz dez anos atrás que lá fomos"), ela também não faz falta na primeira ("Foi há dez anos atrás que lá fomos").
Então, por que motivo se começou a usar essa preposição com o verbo haver, sempre que se fala de tempo? Quanto a mim, há dois motivos principais: por um lado, porque a forma verbal "há" também significa "existe/existem" e, para evitar ambiguidade e mal entendidos, o uso de "atrás" garante que se fala de tempo decorrido. Eis um exemplo: Há dois dias que não contam. Esta frase pode significar "faz dois dias que [eles ou elas, alguém plural de quem se fala] não contam"; ou "existem dois dias [na semana, por hipótese] que não são considerados".
Por isso, tendemos a dizer "Há duas horas atrás..." para enfatizar o facto de estarmos a referir-nos a qualquer coisa que aconteceu duas horas antes ou atrás (e não a "duas horas que existem").
E isto leva-nos ao segundo motivo: é que a preposição atrás serve, realmente, para indicar a anterioridade no tempo. Por isso ela pode ser usada em vez (como equivalente) do verbo haver (Daí a tendência para misturar tudo, que é uma espécie de tautologia, como dizer "elo de ligação" ou "outra alternativa").
Aliás, atrás é mesmo aconselhável quando usamos o discurso indirecto, para substituir o verbo haver, se não o quisermos conjugar noutro tempo, que não o presente. Repare-se na transição do discurso directo para o indirecto neste exemplo:
DISCURSO DIRECTO: "- O que fizeram há três meses? - Perguntou."
DISCURSO INDIRECTO: Ele perguntou o que tinham feito três meses atrás.
Em alternativa, poder-se-ia manter o uso do verbo haver, mas conjugado no pretérito imperfeito (coisa que muita gente não se lembra de fazer, mantendo haver no presente):
DISCURSO DIRECTO: "- O que fizeram há três meses? - Perguntou."
DISCURSO INDIRECTO 1 : Ele perguntou o que tinham feito havia três meses.
DISCURSO INDIRECTO 2: Ele perguntou o que tinham feito há três meses.
Ora, esta última frase (2), com o verbo haver no presente, só se justifica quando o momento em que se concretiza o discurso indirecto é próximo, no tempo, do momento de enunciação do discurso directo (se os "três meses atrás" forem os mesmos para quem falou primeiro e para quem ouve o discurso indirecto).
Concluindo: "há" não precisa de "atrás" para nada, quando falamos do passado. Mas "atrás" serve para substituir "há", quando "há" deveria ser "havia". A explicação que ficou para trás é confusa e provavelmente desnecessária... perdoem-me. A intenção era boa!