Can someone help me explain the "invalidating reports" proces

We have a medium high traffic site with 5-7 million visits a months, I am using many premium plugins, also funnels and custom reports.

Now I need to make some reports with 3 months worth of historical data. First I made sure I am not invalidating reports for periods I don’t have raw data for (used api for that). 3 months is a safe range.

So what exactly happens when I invalidate? I tried it (test environment) and I was expecting empty daily weekly and monthly reports for that period at least till the next cron. While the custom reports were empty these reports remained complete. So will they be ‘overwritten’ with the next cron job? And what happens if you made a mistake and don’t have raw data, will the daily reports etc be empty after the next cron job?

On a sidenote, I guess reprocessing 18-20 million visits will take a while, even on a dedicated box right?

A subsequent question. I ran the process of invalidation and reprocessing. However after it finished my custom reports and funnels show gaps (days) with 0 per cent conversion now and again which is impossible (individual events show there should have been conversion). All raw data is available so I have no idea why this is happening. Does anyone have a possible explanation and solution?
Is it possible to invalidate just the funnel and custom reports for a date range instead of ALL reports, using command line?