The first one is ok since it will simply give the row count for the entire table.
The second one is probably ok, although ranges ( <, >, BETWEEN ) may take time. You could create a script which runs once per day that moves all expired properties from properties to a table called expiredProperties.
The third one should be quicker if you do it using a join instead
SELECT count(*) AS allAvailableProperties
FROM properties p
LEFT JOIN bookings b ON p.propertyID = b.propertyID
WHERE b.propertyID IS NULL
AND b.endData < @date
Oh, and if you want to actually test the effects, create a script which inserts huge amounts of data into your tables. Either just insert random data and insert a million rows or so, or figure out what you expect to have in the future (per day), make it 10 times more and insert data for 1 or 2 years.
After that, issue the different queries and check how long they take. At that point, you'll have a decent idea what to expect in the future. Although real-world data can differ enough that you would get different results. Thus, trying to make your profiling test data as similar as to what you expect might be a good idea.