This is all very easy and pretty straightforward. I am using the exact same scenarios on my site, so here is the basic.
1) Each protected “lesson” will be a wordpress post/page with a couple of videos and several downloadable files. Each lesson can be purchased independently with a simple buy button?
You will likely be using Custom Capabilities (ccaps) and each lesson can be called Lesson1, Lesson2, etc. Each purchase will include the matching ccaps that will be granted to the customer when they make the purchase. Then, you will be using conditionals. You can use the basic shortcodes like this:
[s2If current_user_can(access_s2member_ccap_Lesson1)]
Display the content for Lesson1.
[/s2If]
and repeat for other lessons.
2) A purchase is linked to a wordpress account, so that a user can login to wordpress and get access to all of the individual lessons they have purchased in the past?
(I am not sure how easy or hard this is to setup with s2member if it is even possible, or maybe this is the default?)
All the ccaps that a customer will have purchased will be added to his access. Beware that if a user purchases lessons afterward, they have to be logged in for the ccaps to be “recognized” and added (this seems to be a current limitation of s2M) so you might want to keep an eye on any purchase and check if the ccaps were added automatically, otherwise you can add them manually.
3) In addition to the above standard methods of purchase. A special type of premium monthly membership subscription which gives automatic access to all the individual lessons.
This is also easy. Since it would be a different “package”, i would suggest you then associate a ccap like “AllLessons” when someone purchases that premium, and then, in the conditionals to grant access to the pages, you can use this:
[s2If current_user_can(access_s2member_ccap_Lesson1) OR current_user_can(access_s2member_ccap_AllLessons)]
Display the content for Lesson1 which can be accessed by those who specifically purchased access to Lesson1 or those who purchase the premium package to include all the lessons.
[/s2If]
Hope it helps. If you have any other questions, don’t hesitate to ask.