I thought module had to be in /site/modules/ModuleName/ModuleName.module but I'm a bit confused about why it actually works from /site/modules/whatever/ModuleName/ModuleName.module also -- and why won't it work when there are two odd folders (/site/modules/whatever/somethingelse/ModuleName... etc.) instead of one?
A module doesn't necessarily need it's own directory, you could just put it in /site/modules/. But for modules that have more than one file, it's good to put them in their own directory. The directory should be of the same name as the module. However, there are cases where you might have multiple related modules go together (like the LanguageSupport modules), so PW will let you have a dir one depth that doesn't match the module name. In that case, it's good to name it with the primary module name (with LanguageSupport again being a good example of this). The modules in /wire/modules/ also use this quite a bit for grouping, as there are dirs for Process, Fieldtype, Inputfield, etc. You can do this for 1-level but not 2. The point of this is to place some limits on the directory parser to keep things fast.
What I'm wondering here is why some third party modules seem to work at /wire/modules/ and some don't.. but I'm guessing from your reply that it's considered really evil to put any non-core-modules there. Would still like to know, though.
While it's not good to place them there, if you are aware of it and can respond properly during upgrades, I can't think of any reason why 3rd party modules wouldn't work from /wire/modules/. It seems like it should be okay. PW does keep a cache of module locations, so if it's one you had moved, that might have caused the error. But I can't think of anything else without seeing the actual error message. There aren't any real technical differences between /wire/modules/ and /site/modules/.