I think standard web to lead functionality could handle the 2nd step. It will take the given form values and submit them to Salesforce. After that it will redirect the user to the thank you page.
However, the other two parts are outside the standard functionality. You could certainly make a web page for the first step of the process that uses API calls into Salesforce to get the list of documents for the user to select. Then pass those options over the the web-to-lead form for submission to Salesforce.
For the thank you page, you could encode the selected documents into the
retUrl. Then when they land on that page dynamically update the content so they can download the documents. Alternatively, you could email them the links from Salesforce when the lead is created.
With the level of API interaction required for the 1st and 3rd steps you might want to skip web-to-lead altogether. If you are already making API calls to get the document details, why not just do the lead creation with an API call as well.