That's as I had figured it. So:
Terminal 1 boiler and pump neutrals and blue from room stat
All as it should be
Terminal 2 yellow from room stat
That's 'Heating on' and should be the live to the thermostat (usually the red wire is used for this, not yellow)
Terminal 3 red from room stat
This terminal has no function as far as the programmer is concerned so that is why I figured the room thermostat isn't working. However it can be used as a convenient junction box terminal and when it is, the pump live would also go here to connect it to the thermostat switched live (this would normally be the yellow wire, not red)
Terminal 4 boiler and pump lives
This is Hot water on. So the wires are wrong, the boiler only should go here and the pump live should be in 3 as per above, such that the room thermostat switches the pump on and off.
As per terminal 3 it has no function as far as the programmer is concerned.
Terminals 6/7/8. Power from fused spur and earths
That's OK. Terminal 6 is the Live supply and 7 is Neutral (Terminal 7 is for convenience and has an internal link to terminal 1]
Am I right in thinking that red or yellow are live to the stat then comes back as switched live when the stat asks for heat?
Yes. Normally, the wire from programmer 2 is the 'live supply' to the room thermostat (usually the red wire is used for this)
The 'switched live' wire back from the room thermostat (usually the yellow wire is used for this) goes to the pump live
The blue wire is used for the thermostat neutral supply (Not all room thermostats need a Neutral connection)
It appears to me that the red wire from the pump has been moved from terminal 3 to 4. This may be so that the heating and hot water always operate together regardless of the programmer selection, or the room thermostat wasn't working and the wiring mod was intended as temporary way of keeping the heating working until the thermostat was fixed.