There are three main categories of online text game - MUDs, MOOs and MUSHes. Each of these categories have several offshoots; for example Circle, Diku and LP are all very different types of MUD while PennMUSH, MUX and TinyMUSH are types of MUSH. The criterium for my categorisation is how the game is coded for new commands and functionality. These are very general comments and will most definitely not apply to all MUDS, MUSHes or MOOs.
MUDs are coded in a 'real' programming language, typically C or C++. Only people with access to the computer on which they're being run can make meaningful changes to the way they run. Objects can be created, aspects of these objects set - such as damage caused by a weapon - but to add anything interesting, you have to code, recompile and reboot the main server.
MUSHes on the other hand, have a built in language generally refered to as 'softcode' as opposed to the 'hardcode' of the server. This is used to add additional commands over and above the ones that are written in the server, such as 'say' and 'QUIT'. To change the way that these work, the programmer must change the C code and once again recompile and restart the game server.
MOOs are coded in an internal language called, not surprisingly MOO. This language is used to code all the commands that are used in the game. Programmers can change the way that anything works, from 'say' to adding additional game specific commands.
All three types of server have players with different abilities where it comes to coding. MUDs and MUSHes typically have a dichotomy - normal player and Wizard. In MUDs players are helpless and have no access to code, while wizards are all powerful. MUSHes also have this dichotomy, however the players have a limited access to the code allowing them to customise things for themselves if they understand the softcode. MOO has a three way split - players who have no access, programmers who have some access and wizards who have full access.