It has been done a few times but OK.
In modern computers you have DLL files or similar that are loaded as needed. Older machines do not have the luxury (speed, memory- take your pick) but they can set aside some space in the memory. This space can be overwritten (overlayed if you will) as an when it is necessary.
Simply put overlays are part of the game code, they are usually used for the less common functions. What games will use them I can not say (I have seen RPGs not touch them and simple puzzle games use them all the time and vice versa), I have yet to see anything other than a 0 kilobyte ARM7 one though.
Note they are often LZ compressed.