SPI in loop() working fine, but not in ISR TIMER 1 interrupt

You cannot use delay() in an ISR. Time does not 'tick' inside the ISR.

Instead, have a look at <util/delay.h> and

_delay_ms()

Warning: you must not use variables as the argument for _delay_ms() or the code will blow up like pop-corn. Only compile-time known constants. If you need it variable, use a wrapper that calls _delay_ms(1).