delay() does freeze program execution for that amount of time.
If you want some code to proceed while other parts of code is being delayed, use milis() as in the 'Blink Without Delay' example that is in examples in the IDE.
Robin2 has an example of how to do several things at one time.
https://forum.arduino.cc/index.php?topic=223286.0
And
https://forum.arduino.cc/index.php?topic=503368.0
.