Progress in quests is stored in different ways. One newer way is by dividing the quest in steps, and every time you finish a step that is saved. Another way, still used in most quests, remembers the last thing an NPC said to you. WHen you say something and it matches both text (or giving an item) and the previous response in the quest definition, you get a new response which is stored. For example (just inventing things a bit), you give dust, Xardon says "Thank you for the dust". You say "elephant". This does not match with "Thank you for the dust" so nothing happens. You give certificate. THis matches with "Thank you for the dust", Xardon says "Thanks" and you go on in the quest. There are two problems with this:
1. If (in case of other NPCs) you get another response in between, that response replaces this quest's response, and the quest is messed up. FOr example, giving the dust, then getting a quest with another npc (or sometimes just saying hello), and you cannot proceed the first quest.
2. The last response is not saved. If the server crashes (or you log out), you cannot continue the quest, unless it was at points where progress was saved in a different way (mostly when you go to the next npc).
The fix that should help this does the following:
1. last response is recorded for each quest separately, so it does not matter if another npc (or even the same) responds to something else
2. these responses are saved in the database, so a crash or logging out does not matter (unless it crashes just when it needs to save, but that is a much much much smaller chance).
I think it's the first, but then I don't understand why you can't go back some steps and do them again (as it's like if you never did them).
Yes, normally you can go back a few steps (generally first thing you said to this NPC). But you cannot re-give an item. Normally, an alt could get that for you, but in this case that does not work.
Mostly my 1 point above causes problems, because you may not be aware what happened, and after a while you have several quests that do not progress.