What is millis()? How do I make a timer?
millis() is a function in Arduino that returns the running clock time on your Arduino since moment it was most recently turned on. It returns this time in milli seconds. Take that time and divide by 1000 and now you have seconds.
Any event can trigger your Arduino to record the time, not just a button.
What is a while loop?
A while loop behaves like an if statement, if the condition is true the instructions within the brackets are carried out. The difference is, that during a while loop those lines of code are repeatedly executed until or while the condition is true. Make sure that you don't get stuck in this loop forever, in this case we read the value of the button within the loop.