So, bad news. I did a test on my sketch and it took 12 milliseconds to update my LCD. Now, as long as the events you want to time happen less frequently than every 12 milliseconds, then you're fine and you won't miss any events.
If you need to time faster events, I think you still can, you just have to use interrupts so an event will interrupt the LCD display routine. Interrupts are quite feasible but hopefully you don't have to go there.
But, it will be simpler to just have the four messages you mention. You can still save the min/max on/off times in variables, and then display them if an error occurs.
If you want to save a 60-second sliding window history of times, in your loop, keep track of the min/max on/off times as usual. Then every 1000 millis(), store the min/max on/off times into a ringbuffer and reset the counters. I wrote some ringbuffer code for this thread: http://forum.arduino.cc/index.php?topic=186390.0 (the ringbuffer code is spread across a few posts, so read the whole thing). You'd need to define four ringbuffers (on max, on min, off max, off min) each 60 elements in length (you'd also want to use bytes rather than chars).
Note, I tend to use bytes rather than ints in my sketches as bytes take up half the RAM as ints. But if you need to measure intervals greater than 255 milliseconds (about a quarter of a second), you'll need to use ints. Four 60-int ringbuffers would consume 480 bytes, which should be fine (your Arduino has 2,048 bytes, of which about 1,536 is safe to use). An int will store an interval up to approx. 32 seconds long.