Q:

I agreed to cancel a long-planned vacation (with travel costs) due to project deadlines, but now the timeline has all changed again

TL;DR

cancelled a long-planned trip due to a delay in project deadlines and my backup person quitting, and received most of the cost back from the company.
Turns out in retrospect it wasn't necessary as the deadlines then moved again and the original dates would have been fine.
Now I would like to know how to address the current situation (if I should) with management/PM, and how to tackle it in the future.

History
I'm a lead developer and occasional architect in my company which develops projects for customers (the particular technology isn't important here). I'm involved in various projects but I'm the lead on, let's say, the Smith project.
About 6 months back (January) my partner and I planned a vacation to 'City X'  but involves the cost of hotels, travel, etc which we obviously had to book in advance. We chose the dates based around the Smith project and its deliverables as that's been my main focus for the last year or so and most of my role at this company at the moment is the successful delivery for Smith.
At the time of booking, the Smith project was due to go live in June. As many readers will know... projects almost never go according to schedule so we didn't book the trip for "the week after the Smith delivery" -- I booked it for August, so around 2 months after that project was meant to be complete.
Although I'm the "Lead" developer, we do have other developers on this project, some of which are junior or mid-level and one other 'Beth' who is "Senior" developer and she is my de-facto backup. (The company would prefer that I'm around to oversee the Smith delivery but if I was out sick or something, Beth would be able to do it in my absence.) Beth and I both have multiple years of experience with this company and its code base which can be a bit... idiosyncratic ;-)
The context now
About 3 months ago (March) Beth has given notice to quit the company as she's moving on to a better opportunity elsewhere (to be a Lead, I think, so it's a good step up for her). I'm happy for her as her work was always excellent and she deserves to do well. She left a couple of months ago and the company is now recruiting for a replacement for Beth but shuffling their feet over whether to "promote from inside" or find someone via a recruiter, do they want to reconfigure the positions, etc etc.
Meanwhile the deadline for the Smith project has slipped, and go-live is now expected to be around the time I'd booked for the vacation. This wasn't directly due to Beth's departure -- there are more pressing reasons that I won't go into too much detail about but mostly are due to 3rd parties, incompatibilities with versions of vendor software that we are dependent on, etc etc. Smith are ok with this (as far as it goes) -- new deadline expected to be mid August. (2 months delay)
If Beth had been still at the company this wouldn't be an issue with the vacation as she would be a competent backup and I would have been able to hand over the knowledge to her.
However, since she left although we have other developers we don't have a senior-level 'Beth' type other than me, so reluctantly the company asked if I'd be able to cancel/postpone the trip (with any costs made up for). After discussion with partner I agreed as we don't have a particular reason to take the trip at that time (family weddings or whatever). A couple of bonus days off were given as well as vaguely making us whole financially (we could get some, but not all of the money back for the cancelled trip).
(Edited to add: the company refunded travel, hotels, etc. But there were a few other small costs I didn't ask for like additional fees we paid to the hotel for late checkout, advance tickets to tourist attractions, etc.)
But...
I've now found out, this week, after cancelling the trip - that the deadline for Smith has now been moved again (mostly due to factors on Smith's side, rather than ours) and will now be several months later most likely... but with no specific time frame at this point. And that it would have been fine for me to take that trip as we'll now be mostly working on other company priorities during that time, which I'm not particularly needed for (other developers could do my part of that).
I'm angry and disappointed! I was ok (within reason) with cancelling the trip for the 'bigger business purpose' and not to leave them in the lurch now that Beth has left.
Now I feel betrayed, uncertain, and a bunch of other things. I feel like I can't re-book the trip in case the same thing happens again, that I have disappointed my partner (who thought we should push back against my company not cancel the trip, which resulted in quite an argument which I 'won' in the end, but it was a pyrrhic victory!)
I did express some of this to the PM who came back with something like "yeah, that sucks but when we asked you to cancel it we didn't know Smith were going to delay it like that" PM cheekily suggested booking fully refundable reservations next time! (which, as you all will know, cost significantly more. [I wonder if there's a line item in the project budget for that cost difference..!])
I would like to know... (how would the workplace.SE collective suggest I proceed from here?)

Should I do anything further (if so how) in terms of bringing this up to management, project manager, etc?
How can I approach booking any future time off given that this could happen again? At the moment I feel totally reluctant to book anything ever again.
Did I do the right thing (I realise this one is more subjective) in agreeing to cancel the trip?

NB - I haven't (yet?) told partner that the Smith delivery has been delayed so it would have been fine to take that trip (in retrospect). Partner works in a completely non-IT field dealing with "day to day" workload (e.g. a call center) so doesn't really know about how IT projects tend to go and such like. I'm not sure what the response will be, although I know how I'd respond in his position!

A:

Should I do anything further (if so how) in terms of bringing this up
  to management, project manager, etc?  

They've already paid you in terms of your "expenses" and given you extra time off, so I'd think there's no point other than to vent anger (which is a bad idea).

How can I approach booking any future time off given that this could
  happen again? At the moment I feel totally reluctant to book anything
  ever again.

What you should be reluctant to do is cancel your bookings, especially plans which have been in the pipeline for a long time.
Consider it a life lesson and don't change your plans next time.  
Vacation is important and there are lots of other people involved.  In the future let them know months ahead (which you did) then tell them you can't change your plans.  Don't supply details, don't mention that you don't think their deadline is firm, don't mention what happened the last time, just say you can't change your plans.

A:

Now I would like to know how to address the current situation (if I should) with management/PM, and how to tackle it in the future.

There is not much to address the current situation.  You yourself knew that it wasn't likely that the project would have been completed on the original date.  You even booked your trip a few months after the original date because of this.  The fact that the project end date changed again after you cancelled your trip should not have been a surprise to you.
Yes, your backup left the company but that simply means that management has to identify someone else to temporarily act as your backup.  I personally would not have cancelled the trip and in the future I don't think you should do so either.  You are entitled to your vacations and it is not your problem if management does not facilitate proper cross-training.

A:

While you're reluctant to reschedule at this time that is exactly what you should do.  Talk to your boss and your partner and then schedule the trip so that it is only a few weeks or a month later than originally planned.  
You will be clearing it ahead of time with management, it will be before the estimated time for the Smith delivery, and it will still be using the vacation time that you have earned.  
Your boss will know that if suddenly they need it sooner, you won't be available during the pre-approved time.  And you'll get a good break and will be better able to work upon your return from a well deserved break.
From a comment:

You should have negotiated about how and when to reschedule the vacation at the same time of the original negotiation about cancelling it, including how to cover the cost of rescheduling. Being made whole isn't just about money; even if you were happy to change your plan, you (and your partner) still need the vacation. It can't be scheduled for "never". 

What is past can't be changed, so knowing what you should have done doesn't completely help.  But the point that it can't be scheduled for "never" is very true - so what you should do now is schedule the vacation.  Something might happen at work at anytime, and all you can do is try to mitigate the effect.  And then take your vacation.

