When query is executed, SQL server will produce a list of query plans and heuristically choose the plan with lower cost.
The chosen plan will be stored in the plan cache for subsequent use when it sees the same query.
When certain attributes of table change or when an index is rebuilt, then it will again produce a list of query plans again and heuristically choose one with lower cost, and store it in the plan cache.
However, the MSDN seems to indicate that estimated plan is stored in the plan cache, see below screenshot. Is that correct?