The effect is more noticable if you use a low fixed framerate eg. 15 fps - the blue object passes right through the barrier.
You could neaten the events using the 'repeat' condition instead of a loop, which keeps everything in the same event, eg:
+ Right arrow key is down
----+ Repeat 5000 / redguy('Accuracy') times
----+ Red does not overlap wall
----> Set X to .X + (TimeDelta * redguy('accuracy'))
This keeps everything inside one subevent. I don't really like the action-based loops - I'm not sure they deserve to be there - I think using condition loops is always
superior. The runtime can run condition loops faster, and it keeps events in one place (it's bad for readability that 'start loop' runs the loop body somewhere else).
Also, your example doesn't take in to account if it's running too many loops - if each iteration the object is being moved less than one pixel, it is a waste of processing to check the same pixel twice.