1. If you only need to check if the dialogue is finished within the event with the dialogue, then use a self-switch. Turn the self-switch on after the dialogue is finished, and create a new page that has as its condition the self-switch turned on in the dialogue. If you need to check if the dialogue is finished outside of the event (for example, once you've talked to the warden you can get a quest from someone else), then use a switch instead, following the same steps as listed earlier.
2. You could either use common events that get called when you talk to the event or just use multiple pages to the event.
3. What do you mean? If you're just talking about storyline progress, I think the best way is probably to use several variables. These variables would be used together to specify the individual part of the story that the player is at at the moment.