Daily drip of posts – based on user ‘startData’ – ordered oldest to newest

So this may not exactly answer the question, but I hope it could help you, particularly with the following part in the question:

I just want the oldest/ lesson-001, 002 etc.

As I pointed in the comments, if the “lessons”/posts are dated chronologically like in the diagram (Jan 1st, Jan 14th, Feb 1st, etc.), you could just use the date query in WP_Query and query for posts dated after the start_date value and up until today’s date.

So if for example the start_date is 2020-01-01 (i.e. January 1st 2020) and today was February 1st 2020, the following query would return the January 1st, January 14th and February 1st posts, which I suppose is what you wanted based on the question:

$args = array(
    'post_type'  => 'lesson',
    'orderby'    => 'date', // Note that 'date' is simply an alias for 'post_date'.
    'order'      => 'DESC',
    'date_query' => array(
        'after'  => '2019-12-31', // this is start_date; equivalent to '2019-12-31 23:59:59'
        'before' => 'tomorrow',   // equivalent to using the value '2020-02-02 00:00:00'
    ),
);
$query = new WP_Query( $args );
// ... your code here ...

Note: The after and before parameters in the date query, they both accept a value that strtotime() accepts (e.g. tomorrow, yesterday, +1 month, etc.). Also, in WP_Query, date is the default orderby value, while DESC is the default order value.