Our Class Is Working On An Arduino Reflow Oven, Will This Code Work?

I like the general way your code is organized.

Rather than build timing into (e.g.) the preheat() function I would have another state variable that identifies whether it is at the preheat stage (H), peak stage (P) or the cool stage (C). Then each function would continue until the state changed.

Also, I would be inclined just to read the temperature once in loop() and use that value in all the functions.

This would give preheat code a bit like this pseudo code

void preheat() {
  if (heatingStage  != 'H') {
      return;
  }
  // turn heater on
  if (currentTemp >= preheatTemp) { // currentTemp was read in loop()
     heatingStage = 'P'; // move on to peak stage
  }
}

...R