SouthernAtHeart:
I guess this is good practice? It will make my code neater and easier for me to read.
Then it's good practice.
...It must not interrupt my SPI transmission, or anything else important?
Transmitting each byte is handled by hardware so individual bytes won't be interrupted. There will be a delay between bytes while your interrupt service routine runs. But SPI is very resistant to "random" delays. I would be very surprised if you had problems.
Here's the code that I really don't know what it does, it's not normal Arduino code...
The processors's datasheet is helpful for code like that.
TCCR2A = 0;
...sets timer 2 to run as a simple timer. Count up to 0xFF then rollover to 0x00. No PWM output.
TCCR2B = 1<<CS22 | 1<<CS21 | 1<<CS20;
...sets timer 2 to run as a simple timer (the configuration is split between the two registers). Sets the "prescaler" to 1024. The timer "ticks" each 1 / (F_CPU / 1024) seconds (64 microseconds).
TIMSK2 |= 1<<TOIE2;
...sets bit TOIE2 to 1 in the TIMSK2 register. This enables the "overflow" interrupt. When the timer's value rolls-over from 0xFF to 0x00 an interrupt is generated. This occurs every 64 microseconds * 256 = 16.384 milliseconds.