For the personal lesson appointments, you might consider setting up a product using Variants for the date selection along with Inventory Control, so you could define the "stock" for each date as how many appointments you have available, which would cut off further appointment sales for a given date when that many have been sold:
http://www.e-junkie.com/ej/help.variants.htm#variants
http://www.e-junkie.com/ej/help.inventory.htm
E.g., your Variants configuration would look something like this:
Feb.1,99.00,,2,February 1,,
Feb.4,99.00,,1,February 4,,
Feb.5,99.00,,2,February 5,,
...etc.