OK... a little Arduino 101 for those folks who aren't inclined toward electronics and/or programming.
The code listed above is in the C language and makes use of some pre-written libraries specifically for use with the Arduino.
There are three functions, one of which is 100% necessary. By convention, the Arduino will look for the setup() function and run that as soon as the hardware is ready to go. setup() is optional. Following that, it will run the loop() function continuously (as fast as it can) until the Arduino is powered off. The loop() function is not optional. The speedoTrigger() function is one I created and then configured to be called when the interrupt occurs. An interrupt is how outside inputs get introduced into the electronics. As the name suggests, the code will stop running, wherever it may be in the process, and immediately handle the interrupt. The same thing happens on your phones and home computers every time you press a key, move the mouse, etc.
Interrupts should be handled as quickly as possible, so keep the code short and sweet. In this case, we just change the value of the 'triggered' variable to true so that the main execution of the loop() function (when it resumes) knows that the magnet on the spoke has passed by the sensor. We then make use of the millis() function in the Arduino library to get the number of milliseconds that have passed since the Arduino started running. This value gets compared to the last time we checked millis() to determine how much time has passed since the trigger was last activated. A bit of math and we're able to convert the elapsed time and the wheel circumference into miles per hour. The mph value is then piped off to the nixie tube(s). The heavy lifting for making that happen exists within the NixieTube library referenced at the top of the code file.
If I were working with a faster vehicle, I'd probably swap from the millis() function over to the micros() function for increased resolution. The millis() function should be good until around 70mph and I don't have to worry about overflow (this happens when you run out of room to count the number of milliseconds and it needs to start back at zero) since it would take several days of continuous running for that to happen. micros() would overflow every 70 minutes or so and the code would probably need to handle it.