Partir cadena char, comprender codigo

Hola en este foro he encontrado un post del 2013 que no lo entiendo muy bien. He leído algo sobre punteros y creo que entiendo casi todo el código excepto el while, como recorremos el puntero sin un indice?, o mediante resultado = strtok( NULL, delimitadores ); vamos eliminando registros y lo que se muestra es siempre el primero:

#include <String.h>

char *strtok( char *str1, const char *str2 ); 

void setup() 
{

Serial.begin(9600);
char str[] = "ESC 'D' CR ESC \"#XXXXXXXX\" CR ESC 'E' CR";
char delimitadores[] = " ";
char *resultado = NULL;
resultado = strtok( str, delimitadores );

while( resultado != NULL ) 
    {
    Serial.println(resultado);
    resultado = strtok( NULL, delimitadores );
    delay(5000);
    }

}

void loop () {

}

Muchas gracias por anticipado.

Lo explicaré por partes:

while( resultado != NULL )

El ciclo termina cuando el separador no encuentra más coincidencias. Usualmente termina cuando acaba de recorrer toda la cadena.

Serial.println(resultado);

Como el delimitador es un espacio en blanco (0x20), entonces imprime lo que encuentre entre dichos caracteres; o entre este y el fin de la cadena.

resultado = strtok( NULL, delimitadores );

Encuentre la próxima coincidencia. El primer parámetro recibe un puntero de char para establecer el punto de partida de la búsqueda; si recibe NULL, iniciará desde la última coincidencia encontrada.