Millis() blockiert nicht. Man kann natürlich mit millis() auch blockierend programmieren
aber normalerweise macht man das nicht.
Millis zählt die Millisekunden seit dem Einschalten. Für Zeitmessungen oder Wartezeiten wird nur die Differenz zwiscehn der Anfangszeit und der Jetztzeit verglichen. Ich die Differenz größer als die Sollzeit kannst Du etwas machen. So ist eine Wartezeit nicht blockierend und Du kannst viele Dinge "gleichzeitig" machen zB mehrere LED unterschiedlich schnell blinken; Tastet Kontrollieren ob sie kurz oder lange gedrückt wurden usw.
Grüße Uwe