Si lo operas contra 2 si. Osea, es una división, y te da el resto. El primer número antes de % es el dividendo, el segundo es el divisor. A diferencia de la /, que sirve para hallar el resultado exacto de la división, el % sólo te devuelve el residuo.
Un número impar dará como resto 1 al dividirlo entre 2. Un número par devolverá 0. Ese es el criterio para usarlo. En cada ciclo el valor de $i va incrementándose en 1, por lo que su resto al dividirlo entre dos va alternando entre 0 y 1 (par e impar).
Si deseas puedes usar en vez de 2, tres, y ciclar tres colores:
Código PHP:
$color= ($i % 3 == 0) ? "#FFFFFF" : (($i % 3 == 1) ? "#4499FF" : "#FF6600");
De esta manera, la fila 1 ($i = 1), al operarlo contra 3, dará como residuo 1, por lo tanto se colocará el 2do color. La fila 2 ($i = 2), tras operarlo, devolverá 2, y se escogerá el última color. Para la fila 3, como es divisible entre 3, devolverá un resto 0, y se colocará el 1er color. A partir de la 4ta fila, el ciclo se repite y los colores ciclan.
Espero que hayas entendido la base de cómo funciona esto.
Saludos,