Ah! Thanks for clarifying, that makes much more sense.
There’s a number of approaches, depending on what user experience you intend. It could be a series of simple templates, a single complex template, or some combination. Some or all portions could rely on AJAX calls, or could be done completely with permalinks or URL parameters. If the number of terms are not huge, much of the content can be on a single page, the appropriate portions revealed or hidden with javascript or jQuery.
All approaches would revolve around using get_categories() to retrieve each level in turn. On the final category level that would lead to a list of posts, it may be easier to use wp_list_categories() instead.
If you may need to use categories for other posts unrelated to lessons, consider creating a custom taxonomy for the course/lesson structure. There are parallel functions to the ones mentioned for categories for taxonomies.
Not required, but nice to have is a permalink structure that mirrors the path through the levels. Doing so requires the use of the Rewrite API.