At best, comparing numbers within strings is considered bad style. As @tunnus says, you're better off using epoch time format in many cases, which we could say more broadly as, there are numeric forms available that will work better (and show good programming discipline/style).
Now, your particular tests can be done in epoch time, but that may not be the best approach, since epoch time is absolute from Jan 1 1970 UTC, and you are really just looking at particular daily events. Within Reactor itself, similar calculations are done in MSM form, or Minutes Since Midnight.
Looking at your "edges" (the points in time where things change), you could set them in MSM form like this:
vFrom1 = 09 * 60 + 25,
vFrom2 = 09 * 60 + 30,
vFrom3 = 09 * 60 + 41,
vTo = 10 * 60 + 55,
You can see I am multiplying the hour by 60 and then adding the minutes, which gives minutes since midnight for each event time.
To get the current time in MSM, you can:
p=dateparts(), vToDay= p.hour * 60 + p.minute,
From there, the rest of your expression should work as you wrote it, but it will now be comparing numbers (MSM):
#Get current house temperature
CurrentHouseTemp = getEntity( "hass>Thermostat2" ).attributes.temperature_sensor.value,
case
when CurrentHouseTemp <= 19 and vToDay >= vFrom1 && vToDay <= vTo: "true1" # From1
when CurrentHouseTemp <= 20 and vToDay >= vFrom2 && vToDay <= vTo: "true2" # From2
when CurrentHouseTemp < 26 and vToDay >= vFrom3 && vToDay <= vTo: "true3" # From3
else "false"
end
This doesn't change the fact that this expression won't be evaluated periodically on its own. You still need to use an Interval condition to stimulate its re-evaluation.