Does MySQL do UPDATE in place on NOT NULL column?
I can confirm that the comment by ypercube above is correct :)  Here are some additional details:


Updates occur in place, with the older version of the columns relocated to UNDO space.  The UNDO is used for providing MVCC, but also in the event of a rollback.  As InnoDB pages are initially written they are only 15/16ths filled, so there is some free space to reduce page splits.
Indexes contain all 'versions' of a column.  This is required to be able to perform index-only-scans while still offering MVCC.
Exception to this rule is overflow text/blob pages, which are always freshly written and not updated in place.