Sometimes you need to do two things at once. For example you might want to blink an LED while reading a button press. In this case, you don't want to use delay(), because Arduino pauses your program during the delay(). If the button is pressed while Arduino is paused waiting for the delay() to pass, your program will miss the button press.