I haven't done the fireworks cruise but I'll share my thoughts and impressions of the Rhine in Flames event. Indeed you'd need to book in advance (not so with the normal cruises.) The fireworks cruise tends to be pricey. Don't know about food and drinks on board but quality may be suspect. We were on the riverside promenade for Rhein in Flammen and enjoyed ourselves very much - large but very civilized crowds, lots of wine and food, lovely views of the fireworks, and it was fun to watch the lighted boats cruising by as well. The boats looked OVERPACKED on what was a very warm evening - I was sorta glad I wasn't on board.
KD has 5 cruises per day from Bingen north to St. Goar. No need to book in advance. You could catch the train to Bingen, do a late afternoon cruise to St. Goar, find dinner there, and catch the fireworks afterward; return to Bacharach by train. (Consider making reservations for dinner - St. Goar will be busy.) Rather than hopping on another train late at night, it would of course be easier to just book in St. Goar and pay Bacharach a visit during your stay (only 10 minutes from St. Goar.)
When you take the train to Bingen to start the cruise, keep your train ticket. It will get you a 20% discount on the KD cruise - just show it to the cashier.