packetBuffer[7] = 0; // No sé si este paso es redundante...
packetBuffer[3] = 0; // Así es como vamos a separar las cifras; por eso es importante que haya un espacio de por medio
Cero se usa como terminador de una cadena de caracteres. Al colocarlo en dos puntos, nos aseguramos que atoi termine analizando exactamente de tres en tres caracteres.
direccion = atoi(packetBuffer + 4); // Lo mismo, pero 4 bytes más adelante (lo que resta)
Es el mismo packetBuffer, solo que le estoy indicando que proceda a partir del 4to byte (se omiten los tres primeros digitos y el terminador de esta parte).