This is a bit of a challenge since the Event capacity is stored in the booking event page type (CONTENT_BookingEvent) and the event attendees are in the Events Module (Modules> Events > Classes > Event Attendee - data stored in the Events_Attendee table). However, I found a way to do it that doesnt require any programming and is kind of a hack. If there is a better way of doing it I would really like to know.
1) Create a custom query in the Event booking system page type:
SELECT (##COLUMNS##) AS Difference
2) Create a Transformation that looks kind of like
Seats Left: <%# Eval("Difference") %>
3) Add a Repeater with Custom Query web part to the page you want to show the spots left on. Select the custom query you created in the Event booking system page type. Click on the black triangle next to the "Selected columns" field to open the macro editor and enter the following
(SELECT EventCapacity from View_CONTENT_BookingEvent_Joined WHERE NodeID = {%CurrentDocument.NodeID|(identity)GlobalAdministrator%})
4) Select the transformation you created to display the seats left.
Thats it. The COLUMNS macro is being used as a place holder for our calculation query that gets the event capacity from the booking event table and the number of attendees from the event attendee table, which are matched by the Event NodeID and finds the difference.
You could also create a custom transformation method to get the data, do the calculation, and return the seats left. That way would be cleaner. More info on creating custom transformation methods here