how to estimate rebuild index on 140 million records?
Partition on day or week.  That will give you the best possible way to delete old data (via DROP PARTITION).  There is not (unless you have 5.6) a way to move a partition from one table to another; that would be even nicer for "archiving".

The size of a table does not necessarily impact its performance.  It depends on the queries.  Queries that look just at "recent" data (at one end of the table) will probably perform nicely.  Queries that need to scan the entire table, or need to randomly fetch rows (either from the data or from an index) will get slower and slower as the table grows.  This is because of the table being so much bigger than can be cached in RAM.  "Count the disk hits."

Partition discussion:  http://mysql.rjweb.org/doc.php/partitionmaint

Deleting lots of rows without bogging down:  http://mysql.rjweb.org/doc.php/deletebig

Make sure your cache is the right size:  http://mysql.rjweb.org/doc.php/memory

ALTERing a huge table:  http://mysql.rjweb.org/doc.php/alterhuge

(Hehe... I guess your question hits more of my canned answers than any other question.)

InnoDB has a hard limit at 64TB (data+index) for table size.