delay() does not use an interrupt, nor does it stop other interrupts, whether they are in quotes or not.
Edit: delay() does depend on the Timer0 interrupt running, so if something is interfering with that, like a very long running ISR or long periods of interrupt-inhibited code, then yes, it can get sketchy.
void delay(unsigned long ms)
{
uint16_t start = (uint16_t)micros();
while (ms > 0) {
if (((uint16_t)micros() - start) >= 1000) {
ms--;
start += 1000;
}
}
}