We're going to be spending two nights in Oxford, then two nights in Stratford-upon-Avon, then two nights in Bath, then on to London. We're also planning to do a day trip to Blenheim (from Oxford) and a day trip to Windsor (from London). Would it be best to buy train tickets ahead of time, or just buy them at the station? I'm pretty sure it wouldn't be worth it to get a rail pass, since most of our trips are one-ways, but honestly I'm a little overwhelmed by all the options right now. I'm also concerned that if I buy the tickets ahead of time, we'll be pinned down to a specific time to leave. Is there any way around this? Any slightly more flexible tickets? Can anyone advise?
You won’t be saving much if anything by buying those in advance and a pass is unlikely to save you anything.
Try some dummy bookings to look at prices.
Stratford-upon-Avon is rather a difficult place to reach from the south due to a lack of direct rail lines. The journey from here to Bath can take a rather circuitous route taking 4 hours. The journey from Oxford to Bath takes just over one hour with one change - at Didcot. I think if you had planned your trip to go London > Stratford-upon-Avon > Oxford > Bath > back to London that it would have been easier. If on the other hand, you are going straight from Heathrow to Oxford by bus, then I can understand your reason for doing things the way planned.
You are likely to find buying split tickets will reduce the train fares. Play around with different dates on the following site - click Proceed and see what it tells you to test things out. https://trainsplit.com/
This was my thinking also. If you were traveling from London you could buy a return to Stratford Upon Avon which would also be valid back to Oxford and from Oxford to Didcot, so you would only need to buy another ticket from Didcot to Bath Spa.
Starting from Oxford it still makes sense to buy a return to Stratford-upon-Avon as it is only 60p more than the single. Then buy a return from Oxford to Bath (only £1-2 more than the single depending on the time) and a single from Didcot Parkway to London. For the latter the train from Bath does need to stop there.