"Hacer" is used because that is one of the meanings of the verb "hacer":
Hacer. 37. Expresa la cualidad o estado del tiempo atmosférico. Hace calor, [hace] frío, [hace] buen día. Mañana hará malo.
- To be hot = Hacer calor
- To be cold = Hacer frío
- To be chilly = Hacer fresco
- To be nice = Hacer buen tiempo (often shortened to "hacer bueno")
- To be sunny = Hacer sol
All these sentences must be impersonal and conjugated in 3rd person singular (hace X, hizo X, etc.). "To be X" can also be translated as "está X" if X is an adjective:
- It's sunny = Está soleado
- It's chilly = Está fresco
- It's warm = Está templado
To say "It is hot" with the "está X" structure you have to transform "calor" into an adjective and say something like "está caluroso", but that sounds weird and I can't picture any weathercaster saying that. Generally, why "hacer X" is preferred over "estar X" or the other way around is just a matter of convention. Sometimes, two versions may coexist ("hacer sol" and "estar soleado", or "hacer fresco" and "estar fresco") and one may be more popular than the the other depending on the region, but both are essentially okay.
The form "haber" is used to describe the presence of a climatic event, pretty much as English "there is X":
There is a huge tornado in the south = Hay un tornado tremendo en el sur.
It is used with nouns such as "tormenta" (storm), "tornado" (tornado, twister), "ola de frío/calor" (cold spell/heat wave), "ventisca" (blizzard), "terremoto" (earthquake), etc.
"Hacia" is a preposition meaning "toward". In Example 1, "hacia la noche" means literally "toward the night"; that is, as night approaches, the chances of a storm will increase. The same idea could have been expressed with "por la noche" (lit., in the night). Maybe the weathercaster chose "hacia la noche" to make it less monotonous, but both mean pretty much the same thing.