a) ja - weil am Ende der Funktion der belegte Speicher wieder freigegeben wird.
b) aus "Prinzip" - so wenig Global wie notwendig.
c) ob es eine Funktion die bis zu 1500ms blockieren kann braucht sei dahingestellt.
da wäre vernünftiger nach jedem Versuch die Kontrolle wieder an loop zu übergeben (und halt in 500ms wieder zu probieren).
In deiner Funktion tempJson im andern Thread scheint manches dafür zu sprechen das Objekt http temporär zu erzeugen, den wificlient aber eventuell global offen zu halten.
Wenn es allerdings Sinn macht, auch den httpClient permanent offen zu halten, ist "global" im Arduino-Umfeld nicht verkehrt.
Wenn bei Problemen ein "ewig" laufender Sketch auch im laufenden Betrieb das wifi-Gedöns neu initialisieren können muss, und wenn das nicht zu aufwendig ist, kann der Sketch das der Einfachheit halber auch gleich jedesmal machen.