Temp cable adjusted correctly? Seems like the temp door isn't opening far enough to get enough air to flow through the core? Or the seals on the door are shot, allowing too much [cold] air to bypass the core.
Are the hoses routed in the OEM fashion? If so, the heater hoses should be getting up to thermostat temp. They will run at engine temp. They should start to get warm almost as soon as the engine is started. If they do, there's probably nothing wrong with the coolant circuits.
The upper hose outlet temp will depend on the amount of heat load the engine is under. At idle, in cold temps, the upper hose may not get that warm. Especially with the heater on. The heater can extract enough heat, that the thermostat will remain closed. In other words, the heater core is doing the job of the radiator. Especially at idle, in very cold ambient temps.
Another thing is that if just a very small piece of debris gets caught in the thermostat, and keeps it from completely closing, heater performance will suffer in cold ambient.
Get the infa-red temp 'gun'. Or wrap your hand around the heater hose coming out of the manifold. It should be pretty hot.The 1/4 mark on the gauge is proper operating location. Seems like it's running hot enough to make heat.
My guess is it's going to be the temp door.