Há (ago / for how long) vs Faz
Há is the standard EP form for "ago" and "how long". Faz (from fazer) is a colloquial alternative heard in parts of Portugal but is not the standard written or formal form.
PortuStories Editorial
European Portuguese Grammar Guide
Há is used as an impersonal time expression: with the preterite it means "ago"; with the present it means "for (duration up to now)".
Cheguei há uma hora.
I arrived an hour ago.
Há + preterite = ago.
Espero há uma hora.
I have been waiting for an hour.
Há + present = for (duration).
Há quanto tempo esperas?
How long have you been waiting?
🇵🇹 European Portuguese
Cheguei há uma hora.
🇧🇷 Brazilian Portuguese
Cheguei faz uma hora. / Cheguei há uma hora.
Faz is used colloquially in some EP varieties and commonly in BP; há is the safe standard EP form.
Always use há in written EP and in formal speech. Faz appears in some spoken EP dialects but is not recommended for learners targeting standard EP.
From a PortuStories Story
Não o via há anos. Há quanto tempo estás em Portugal?
I hadn't seen him for years. How long have you been in Portugal?