simple but terrible,,,,, for me

if button is not pressed, toggle led1...

Though this is only pseudocode, it mixes button which relates to led2, and led1. The real code should keep them separated.
You have your main loop. You can read millis(). Just add if() blocks there that will perform things, when the condition is met. Inside the if() blocks, don't use while() or delay() or anything else that might prevent the program from advancing to the next if() block.

The first if() block could be the 500 ms blinking. Calculate millis() % 500. If remainder is less than 250, turn led1 on, otherwise turn led1 off. If you don't want to turn it on lots of times consecutively, use flags to remind that the led is already on - or off.

The second if() could check the button state and act accordingly.

More ifs could be added when needed and they wouldn't need to take in concern each other.