A typical MMORPG operates on a fairly simples system for mobs and NPCs. Basically, the world has a number of spawn nodes for creatures and NPCs. For example, a city will have spawn locations for each NPC in the town, and a forest will have several locations for mobs to spawn. When a mob is killed, it is queued to be replaced by a respawn after a timer expires. For NPCs in a city, the respawn is almost always the same NPC of the same level (especially in the case of vendors and important figures). For mobs, however, the level and even type of mob may be different that the previous mob occupying that spawn slot.
Now the system is pretty simple and ensures a fully populated world no matter where you are, but it also has several problems. Each mob has to be kept track of whether or not there is a player within viewing distance of it. There are only a limited amount of mobs of a certain type, making quests that involve drops or killing certain creatures more difficult if other are doing the same quest. Also, it is hard sometimes to find mobs that are appropriate for you to kill for trade skills and leveling. It’s also possible for griefing players to kill and not loot mobs for specific quests to prevent respawn.