It costs the airline nothing if you don't show up to occupy your seat, in fact there would be a marginal fuel saving resulting from not having to carry you and your bags.
It depends. They have missed out on the
Opportunity cost. In the majority of cases where loads are below 100% what you write is true and the airline saves money. However, on a fully booked flight where airlines could sell seats for a premium they are missing an opportunity. Take the situation I describe above. Had I not shown up for the flight, easyJet would have saved a few quid on fuel. If we'd cancelled (like we wanted to), they could have resold our seats and potentially made £1250, clearly a much better financial proposition for the airline. Without an incentive to cancel, most pax in this situation would prefer to keep the booking and no-show, meaning everyone loses.
Some locos have experimented with versions of a permitted cancellation policy. Wizzair offer a 'Flex Fee', which allows passengers to change flights free of charge (although you have to pay the fare difference). Easyjet used to allow passengers returning to the airport they departed from to catch an earlier flight if they showed up at the check-in early (not sure if this is still the case). However, I can't think of a good reason why more locos don't offer some sort of incentive to cancel flights (when it is in their interest) apart from it perhaps being too complicated.