I will try to answer each of your questions.
1) Yes, the benefit of modifying the list "in place" is that everything else remains as it was and should have the default behaviour.
2) Again, yes, typically your utility functions would be defined in a file that is read by the .cdsinit startup SKILL file (or the function could be defined directly in the .cdsinit file, but generally it is cleaner to load these files).
3) ?? Eh? Start the session, test it. For debugging purposes you might be able to add a printf statement at the end of the file to say that the something.menus file was loaded, you should see it in the CIW. If you are modifying existing menus without adding or removing anything else then the menu may appear to look the same; perhaps this is your question? Through SKILL you could check what the menu item callback was...
4) Sorry, I have not customized the ADE menus, so I will leave this to Andrew or someone else to reply to.
5) Did you read the <instDir>/tools/dfII/etc/tools/menus/simui.menus file? I believe it mentions a function sevAddMenuItemLists() that you might be able to use. Again, I have not played with customizing the ADE menus, so someone else may be able to add some value here.