You kind of have 2 questions in here.
I would like to create a specific flow that sends automatically an email reminder out to specific users when a sales client contract is due to end 30 days before and must be linked to a column in a document library 'termination date' in sharepoint.
I think your best bet is to create a calculated column called EmailReminderDate. This link will give you a bit of info on how to do that, but I think it'll end up something like this: =[termination date]-30.
https://msdn.microsoft.com/en-us/library/office/bb862071(v=office.14).aspx
Create a flow that's triggered to run daily (Recurrence).
Create a timestamp for "today" (Data Operations - Compose). You might have to format the timestamp to play nice with the rest of the flow. This thread will give you some info and links about timestamps.
https://powerusers.microsoft.com/t5/Building-Flows/Is-there-any-way-to-do-a-timestamp/m-p/50999#M4711
Get items from your SharePoint list, and filter the results using EmailReminderDate equals timestamp.
Use the Apply to Each option and send out an email for each result (ie. every contract that expires in 30 days) that is returned.
Personally, I would probably add 2 other columns, EmailReminderSent and EmailReminderSent_dt, and update those columns when the flow runs successfully. That gives you a bit of extra visibility into what's happening.
Is there a way that once the flow is created and then the day after when the contract ends to move these files to an ‘expired contracts’ folder?
Create a flow that's triggered to run daily (Recurrence).
Create a timestamp for "today" (Data Operations - Compose).
Get items from your SharePoint list, and filter the results using termination date equals timestamp.
Use the Apply to Each. It looks like you'll have to copy the file to the expired contracts folder and then delete the record in the original document library.