La fonction millis() compte les millisecondes depuis le lancement du code.
MS = millis()-start;
start est initialisé à la fin du setup avec la valeur de millis : donc calculer millis()-start revient à calculer à chaque lancement de la loop le nombre de millisecondes écoulées depuis cet instant (la fin du setup).
OK jusque là ?
Le reste c'est pour transformer ce nombre de millisecondes en quelque chose de plus facile à comprendre pour nous : des minutes, secondes et chiffres après la virgule.
Serial.print ((MS / 1000) / 60); // minutes
Ceci affiche les minutes écoulées : la division se fait sur des entiers, donc le résultat est un entier aussi. Diviser cette durée par 1000 revient à calculer le nombre de secondes écoulées, diviser ensuite par 60 revient à calculer le nombre de minutes écoulées.
Serial.print ((MS / 1000) % 60); // secondes
Là c'est un peu plus compliqué : MS/1000 est le nombre de secondes écoulées depuis le lancement du chrono, OK ? Comme on sait déjà le nombre de minutes passées, on veut connaitre le nombre de secondes dans la minute en cours. On pourrait ôter à ce nombre de secondes total le nombre de minutes écoulées multiplié par 60. Ça revient à calculer le reste de la division par 60, c'est ce que fait la fonction "modulo", représentée en C par le symbole % : (MS / 1000) % 60 est le reste de (MS / 1000) divisé par 60, soit le nombre de secondes dans la minute en cours.
Exemple : suppose que MS/1000 vaut 620 secondes. 620/60 vaut 10 minutes, reste 20 secondes. On aurait pu calculer ce 20 en faisant 620 - 60 * (620/60), mais c'est plus rapide avec le %.
Serial.println (MS % 1000); // millièmes
Ce qui reste, c'est les millièmes de secondes : le reste de la division du nombre de millisecondes par 1000.
Dans mon exemple si MS valait 620250, j'avais bien (MS/1000) égal à 620. Il reste à calculer les 250 ms avec le modulo.
Je ne sais pas faire plus clair, j'espère que ça ira...
Lorsque le code tourne sur ton Arduino, la loop est exécutée en boucle (d'où son nom), donc tu vois passer les chiffres à chaque exécution de la loop, ça doit être très rapide. Si tu débranches l'Arduino, tu verras les dernières valeurs sur la console.