Futures payoff is indeed $S_t-F_0$, but the $t$ in question is the maturity date of futures. In this derivation $t$ denotes maturity date of the option, which is always before the futures maturity. Therefore, on the day of option maturities, the futures did not expire yet, but the value of the futures position is $F_t-F_0$ (in mark-to-market sense, you can obtain the value by liquidating the position), and in this sense we can see the future position as having "payoff" of $F_t-F_0$. It's more of a wordplay, than anything substantial to the case.
I don't know if Hull prefaces this derivation with simpler explanation, but maybe my take on put/call parity will help you:
1) Let's say you Buy call option and sell Put option, both with strike $K$.
2) Then at expiry, if market price is higher then strike, you exercise call and obtain long position. If market is lower then strike, counterparty exercises the put against you and again you have long position. So no matter what, you end up with long position (this is called creating synthetic position).
3) So, price of Call minus price of Put must be equal to the price of agreeing to buy underlying for the price $K$ at some day in future (maturity date of the options). (otherwise there would be riskless arbitrage for you).
4) This is the basic idea, and then you add details, like, whether the undelying is futures or not, whether you pay option premium immediately or not etc. Simply, you sort out what's the value of "agreeing to buy X in the future for price K" and whether you discount the option price, and these product-specific things.