This topic really falls into two: on the one hand there are attacks that deal something else than damage; on the other hand, there are attacks that deal special types of damage. We will deal with them in turn, focussing on the first in this first post.
Here are some of the special conditions that successful monster attacks can inflict on the player in D&D3: poisoned, diseased, cursed, level drained, ability drained, blinded, deafened, confused, dazed, dazzled, exhausted, frightened, nauseated, paralyzed, petrified, stunned -- and this list is not exhaustive. Apparently, giving monsters such powers was felt to be very important. Why? What's wrong with monsters just doing damage?
The answer is: because damage is either too dangerous or not dangerous enough. Monsters generally need several hits to kill a character; if this were not the case, if damage totals where close to hit point totals, combat would become very random (and increased randomness means increased lethality for the player). But this means that if you are nearly fully healthy, there is little risk in fighting. Even if you meet a strong monster, you have a couple of risk-free turns to see how things turn out.
This obviously deflates the tension of combat. In order to get the tension back, we need bad stuff that can happen at any time, but which is not by itself lethal. This is where poisons, diseases, and so forth come in: fighting that snake is tense, not because he might kill you (you know that you will win before your hit points run out), but because any of his attacks might poison you, which will weaken you for a time that extends beyond the current combat. The snake may not kill you, but he can soften you up for the next monster.
Apart from increase of tension, such special attacks can also be used to influence tactics in several ways. You can give the player a limited supply of "resist poison" potions, and make him decide whether this snake is enough trouble to use them. You can make different combat engines optimal: fighting against the snake requires you not to get hit, which means that ranged attacks, slowing effects, and so on, become much more useful. Or you can temporarily shut down certain combat engines or abilities: for instance, dexterity damage ensures that the rogue can no longer sneak effectively; being blinded makes the wizard unable to read scrolls; being exhausted makes hit-and-run tactics impossible.
When done well, then, such special attacks can really add something to the game. But it is not easy to do them well. Let's think about curing the conditions first. We can put them into three classes: short-term, long-term, permanent.
- Short-term effects do not last long beyond the current combat. This means that they must significantly raise the danger of that combat, because otherwise they will be of no consequence. It is possible to do this, but the danger of making the effect too deadly looms large.
- Long-term effects last far beyond the current combat. Generally, they lead to a "rest until over" kind of play -- pressing "." a couple of hundred times in NetHack, or taking some days or weeks rest in D&D. This is generally quite boring; but we want special attacks that raise the tension, not special attack that punish with boredom! Long-term effects only work if you can somehow force the player to go on with the game. (One could put a strict time limit on the game; but it perhaps better to use a carrot, and make the condition go away after a certain number of monsters have been killed, or something like that.)
- Permanent effects last forever, unless cured. Generally, weakening the player forever is too harsh -- it makes achieving game balance impossible. So we add possibilities to cure the player: potions of extra healing, wands of stone to flesh, cure disease spells, and so on. But the net effect of this is that we turned the game into multi-dimensional attrition warfare: the monsters attempt to inflict conditions X, Y and Z just a little more often than the player can find ways to cure X, Y and Z. Now this may be a matter of taste, but in my experience, such gameplay sucks. Is there anyone who enjoys constantly having to find potions of cure poison, and applying them whenever he is poisoned, and then hoping that he won't be poisoned too often? It offers no tactical depth, and is a bit too much like bookkeeping.
- Some games have conditions that immediately kill the player. ("Finger of death", anyone?) This either makes the game very lethal in an arbitrary way, or forces the player to find some means of immunity. We'll come back to that below. In general, I'm not a fan of this.
This, then, is the primary design challenge: to design conditions that can be inflicted on the player as alternatives to damage; in such a way that both trying to avoid and being afflicted with those conditions makes the player abandon his optimal routine (either by sticks or by carrots or by a combination); while not making the optimal curing strategy for such conditions boring.
A last thing: resistances and immunities. Most games that have conditions also have items or skills of whatever that either give you a better chance of resisting them, or make you outright immune.
This is a design failure.
It works somewhat in a game with many characters, like D&D. If the monster inflicts diseases and only the monk is immune to disease, the party can try and formulate a new tactics where only the monk gets next to the monster. This is sometimes interesting. (It rarely works that way in practice, either because there are many monsters with the ability and the monk cannot stop them from approaching the other characters; or because it is one seriously nasty dude and the monk alone doesn't have enough staying power to survive his hits.)
But it absolutely doesn't work in a single player game. As designer, you should have made those conditions a fun part of the experience; otherwise, they shouldn't be in the game. Presumably, you have designed them to give the most fun mix of tension, survivability, and so on. Giving a character resistance to the condition therefore removes some of the fun. Worse, making a character immune to a condition simply removes it from the game.
Take NetHack. A character apparently cannot survive very well without being immune to a whole set of things: poison, sleep, fire, cold, spells, and so on. Once a character has all those immunities, it is as if all those special attacks no longer exist. In other words, you have transformed a vast number of monsters from being interesting, to being run-of-the-mill. There is simply no way that can be a good design decision.
The only kind of resistance that seems really interesting to me, is one that comes at a price. Wearing that towel to be immune against the medusa is a good example, since it also makes you unable to see anything else! Another good example from NetHack is levitation: you can no longer fall into traps and you can walk on water, but you can't take the stairs down or pick anything up from the floor either. Additional examples are easy to think of. Magic resistance that protects you against spells, but with a certain probability that the deflected magical energy turns into something perhaps even nastier. Immunity to sleep that makes you unable to, well, sleep, including getting restful sleep. Immunity to poison gained at the price of becoming undead. That kind of stuff.
Coming soon: elemental damage (and anything that is structurally the same).