>>42
Hosted is a word that refers to C implementations that have a full library (the opposite is "freestanding"). In freestanding C, there may not be a supported startup function called main, and there is no standard in this are. For instance, the Linux kernel does not start with int main(int argc, char **argv). It uses gcc as a freestanding implementation (no standard library either, just pieces of it the kernel provides for itself). Hosted C implementations can support additional ways for writing the startup function beside the standard one. (E.g. Windows has WinMain).
void main(void) is "bad" because it is a poor tradeoff. you're leaving the standard dialect of C, without getting anything in return (and void is one letter more than int so you don't even save typing). The only exception would be that you need to program some system which for some reason only accepts void main.
void main is cluelessly used by programmers without checking that it is supported on systems where it isn't actually documented as a valid startup function. it just works by fluke, and usually leaves the program with a garbage termination status, too, if the program stops by running off the end of main instead of calling exit.