I just tried to write to a delta lake table using override mode, and I found that history is reserved. It's unclear to me how the data is overridden, and how long the history could be preserved. 
As they say, a code is better than a thousand words: 
mytable.write.mode("overwrite").saveAsTable("apps")
 
%sql 
SELECT id,display_name FROM apps WHERE id = 3; 
id | name
3  | old 
 
# mytabl gets updated
mytable.write.mode("overwrite").saveAsTable("apps")
 
 
%sql 
SELECT id,display_name FROM apps WHERE id = 3; 
id | name
3  | new 
 
 
%sql 
SELECT id,display_name FROM apps VERSION as OF 0 WHERE id = 3; 
id | name
3  | old 
 
 
 
Also, what is the performance and cost implication of having many versions of a single table?