I think AddSpellEffectById take a spell's rawcode, the type of effect (self effect, target effect, whatever), the x and y coordinates and puts the the effect of the spell of the given type at the target coordinates.
AddSpecialEffect takes a model file directly and creates an effect from that model at the target coordinates.