select starttime, starttime + slots*(interval '30 minutes') endtime from cd.bookings order by endtime desc, starttime desc limit 10
This question simply returns the start time for a booking, and a calculated end time which is equal to start time + (30 minutes * slots). Note that it's perfectly okay to multiply intervals.
The other thing you'll notice is the use of order by and limit to get the last ten bookings. All this does is order the bookings by the (descending) time at which they end, and pick off the top ten.