Generation never "stops" - the number of coins generated gets halved every 210,240 blocks (4 years). It will take somewhere around 17.5 years from block 0 to generate 20 million coins. The next 1.024 million will never be completely generated. Generation won't "stop" until the number of coins generated per block is less than 10^-8 (minimum precision of Bitcoin). That will happen somewhere around block 6.76*10^6, or roughly 130years in the future.
Bitcoin has a Merkle Tree implementation that allows old block transactions to be purged or something like that. Read the design paper, it's all a little above my head.
Besides, in 10 years our phones will all have a terabyte of storage and our desktops will have god knows how much.
It will stop. The halving is done as a bitwise right shift instead of division, so the number of coins awarded will eventually be 0. Block #6,929,999 will be the last one to produce coins. This should happen around 2140.