When you perform the glitch, and fly away, the game remembers your battle, so the START button not working is due to this. The game saves a value in a 12 byte of memory, starting at CD23 in Blue and Red Version. Let's say you battle the trainer with level 17 slowpoke near the nugget bridge. This memory section works like this.
8E 11 00 3C 00 1E 00 1D 00 1C 00 15
8E is the same for all battles.
11 is the enemies level, (17 in decimal)
The next ten bytes are the stats of the Pokemon. Each one takes up 2 bytes. (HP/Attack/Defense/Speed/Special)
They are wrapped (in a sense) with the byte 07 on each side.
The memory section "15" is what's important (mostly) here. In standard decimal notation, this means the enemy Pokemon has 21 Special.
When you return to the route you warped away from, the game tries to resume the battle, for reasons unknown, the game takes the previously listed section of memory as a indicator of the Pokemon, and the next (07) to use as the level. Mew's hexadecimal value is 15, so the last byte (the special) is used to call the Pokemon, and the wrapped up (07) byte calls the level, so you get a level 7 mew.
Other shenanigans
Using growl, for some odd reason, lowers the byte wrapped around the memory address, so you can obtain level 1 Pokemon in gen 1! Which break the game in their own special way.
Check the hexadecimal values for all Pokemon, as these are quite useful.
Using ditto, you can alter the special stat to your own liking, meaning, every Pokemon in Red/Blue can be caught with this method. Stock up on them master balls and get catching.
You can even fight trainers, like a glitched agatha fight and Prof. Oak, who has no glitches in his fight whatsoever, which indicates he was planned but alter scrapped.