How would a faulty head gasket explain the no passenger compartment heat? It would explain the overheating possibly, but I don’t see the relationship to the inside heater. It seems like the inside heater air would be extra hot, if anything, b/c the coolant is extra hot.
If the engine is overheating, there’s several possibilities for that. Head gasket, engine cooling fans malfunctioning, water pump, collapsed or plugged hoses, faulty thermostat, radiator cap, air bubbles, temp is actually ok but the gauge is wrong, etc.
If the heater isn’t working, there’s several possibilities for that, heater controls faulty and not allowing coolant to flow through the heat exchanger, the blower fan not blowing air across the heat exchanger, vent flaps not working, heat exchanger is clogged, etc.
So given what you’ve already done, you know the heater works fine at idle, so what’s in common? Somehow while there’s plenty of hot coolant available, at highway speed it isn’t going to the heater … hmmm … that’s a tough one. I’m thinking it has something to do with an air bubble still remaining in the coolant , or some kind of weird pressure distribution within the cooling system, which might be due to a faulty water pump or a failed radiator cap.
I might just replace the radiator cap, try that as a flyer. Since it is inexpensive to do.
Still a no go? There should be a large volume flow of coolant into the top of the radiator when the engine is warmed up, and it should flow even faster at higher rpms. Does it?
Still nothing to go on? Test the amount of flow through the heater core by opening the two hoses. Plenty going in? Plenty coming out?
If all that experimenting doesn’t work, I’d ask a shop to do a pressure test of the cooling system, and check the head gasket.