Völlig korrekte Beschreibung.
Wobei es besser wäre den digitalWrite auch noch in die Interruptroutine zu packen. In Loop wird sonst fast immer nur der gleiche Wert geschrieben. Im Interrupt weiss man ja, dass sich der Wert geändert hat und schreibt ihn dann einmal und gut.
Außerdem könnte man dann state auch in der Interruptroutine als static deklarieren und wäre damit die globale volatile Variable los.
Also so:
int pin = 13;
void setup()
{
pinMode(pin, OUTPUT);
attachInterrupt(0, blink, CHANGE);
}
void loop()
{
}
void blink()
{
static int state = LOW;
state = !state;
digitalWrite(pin, state);
}