Because you overrode the default settings defined by the geometry package (such as \footskip) then the last settings will be applied to take effect. You set \footskip to 25pt and that is too small!
I recommend that you use geometry's settings only rather than mixing them with native length macros. The following native length macros should not be used if you have already loaded the geometry package.
a4paper,% other options: a3paper, a5paper, etc
% use vmargin=2cm to make vertical margins equal to 2cm.
% us hmargin=3cm to make horizontal margins equal to 3cm.
% use margin=3cm to make all margins equal to 3cm.
You can use a combination of geometry (to change the top and bottom margings) and the adjustwidth environment provided by the changepage package (this uses internally a list and it's similar to your changemargin environment):