Cant really help with the heat, but I had the 2.3 in a focus (I'm assuming similar or same engine). It had a fan relay fail causing it to overheat in traffic or idling. Basically the fan would never kick on. Seeing if your fan runs when the car is up to temp and idling should be easy though, just listen for it outside the car.
Beyond that it sounds like you could have multiple issues. A leaking heater core should still provide heat...you should also notice the coolant level dropping if its leaving. I've had issues with air in coolant loops before that does cause no heat situations. Something like this helps alot. Some shops just fill it up and don't take the time to bleed the system properly. One time using that on a jeep I actually reved the engine a bit to get even more air out before I got heat from the vents. Idling wasn't enough to get the stuck air apparently.