Using millis() in unsynchronized manner
I am assuming millis() is a Timer ISR function.

It is a function that retrieves a value that is updated by and ISR.

What would happen if the ISR asynchronously changes the value being
read in a function.

Cannot happen: the value is read with interrupts disabled.
See for example, in the AVR core:
// disable interrupts while we read timer0_millis or we might get an
// inconsistent value (e.g. in the middle of a write to timer0_millis)
cli();
m = timer0_millis;
SREG = oldSREG;


I mean if I have read one byte into currentMillis, but millis had
changed the value before the remaining 7 bytes are read.

An unsigned long is only 4 bytes. That is, until someone comes with a
64-bit Arduino platform.