The example-code that you posted uses the function millis() for debouncing the button.
This is something different that "waiting for a button-press to switch of an LED"
For the task "waiting for a button-press to switch of an LED" debouncing is not nescessary.
As a pseudo-code
in a arduino-board is powered up the function setup() is executed once
So inside function setup() you code:
switch LED ON
if power is supplied to the arduino-board the function loop() is doing what its name says:
looping infinitely.
So inside loop() you have to do two things
checking if the button is pressed
checking how much time has gone by since powerup
if button is pressed: switch off LED
if one minute has passed by: switch LED off.
The established users just link to this very unsatisfying BWD-example.
Here is a short tutorial that is easier to understand as the "standard" Blink-without-delay-example. (I'd like to call it "blink without explain" )
So please start reading the example-code and then ask specific questions if you do not understand something
best regards Stefan