Timer, inputs, and states, need some help with a project for brewing beer

I guess if I have to boil my question down to the essence, it's "how should I change states, do I need a Finite State Machine, or is 'swich(case)' good enough?", and "how best to implement the best solution"?

You can use the FSM library, but you can just as well make your own system with switch case. Take a look at the library and see if you like it. Personally I'd stick to switch - YMMV. Search the forums - the subject has been discussed many times and you'll find example code - some of it relating to brewing.

Best solution? Without wishing to be awkward, it's very hard to say - what do you mean by best? Shortest, clearest, safest, easiest to understand, most adaptable? I really wouldn't worry much about this part until you have something working - it'll be a lot clearer to you then what at least makes a good solution for you. Best can wait.