I think this is similar to what robtillart is suggesting, but I'm not sure.
You need to design your sketch so that it does not block. This means that it can continue to poll the input state while it is doing the timing. The blink without delay example sketch demonstrates the principle.
I'd do it like this:
In loop(), read the input state.
If the input state is inactive (brakes off) turn off all the outputs and save the current time as the last time that the brakes were off.
Else the input is active (brakes on) so subtract the last time that the brakes were off from the current time to get how long they have been on for.
If that exceeds a second, turn on the first output.
If it exceeds two seconds, turn on the second output.
If it exceeds three seconds, turn on the third output.
There is plenty of scope to fade these outputs rather than just switching them on if you want to get clever.
Note that none of the logic above involves waiting for anything - loop() would perform this logic each time it is called. Since loop() is called repeatedly, this means the logic would be repeated hundreds of thousands of times a second and just take whatever actions were needed based on changes to the input and the passage of time. There is ample time for your Arduino to deal with other jobs as well, if you wanted.