La flush() lasciala stare NON fa quello che tu credi ... leggi il reference ...
... in merito alla seconda domanda, se sei nel delay() sei FERMO, NON c'è alcuna lettura da SD. Non sei su un PC o su un sistema Linux dove hai un multitask, sei su una piccola MCU, senza alcun sistema oprativo e dove le cose si fanno una alla volta e sei tu a farle. Se usi delay() fermi tutto per il tempo del delay(), allo scadere del delay riprendi da li.
Magari se spieghi esattamente quello che vuoi fare possiamo esaminare la cosa ...
Guglielmo