Clients can cancel and reschedule appointments two ways within the cancellation policy you've established under Setup > Booking Rules:
1) In every Appointment Confirmation email sent to clients after an appointment is booked, there's a link the client can follow to cancel or reschedule the appointment. If they decide to cancel it, they can schedule another one after they cancel it on the same page.
Once an appointment is cancelled by the client, it will no longer show on the calendar, however, the date, time, and service title for the cancelled appointment will show up in the client details in a strike-through format with a hyperlink to the message history in case the client has left a message for you. If the client reschedules the appointment via the link in the appointment confirmation, it will update the date and time of the appointment in the client details, however, the original appointment date and time will not show up anymore.
2) If a client chooses to register for a Full Slate account (an option presented to them at the end of the booking process unless you've chosen to disable this under Setup > Booking Details), they can log into their account and view all past and upcoming appointments. They can also cancel any of the upcoming appointments and easily schedule a new one.
You can determine if a client has registered for a Full Slate account by viewing their record under Clients > Details. At the top of the gray box on the right, it will either say "Not registered" or "Registered as email@example.com". If they have not registered, you can invite them to do so by sending them the "Invite Client to Register" email template.