1. Tags are used to organize and specify in case multiple requests are made. They are not strictly necessary, but it is good practice to use descriptive tags. (If you're only making one request, you don't need tags. If you make a lot of requests, you definitely need them to sort things out)
2. AJAX requests are asynchronous - they are not instantaneous, and there is no way to know when you're going to get the data after you request it. So there is a trigger for AJAX On Completed, where AJAX.lastdata holds whatever information you requested.
Why do you need AJAX? Because the XML plugin has no way of getting the data from a project file - you need AJAX to do so. When you use "Load XML", you're putting the data you retreived from the project file via AJAX into the XML object.
3. This is the typewriter function. This is source, or whole text - xml.StringValue("/chapter1/hint—/text()"). len(Text.Text)+1 is how long Text currently is (starts at 0) and adds 1. The left(a,b) expression that wraps the whole thing means take the "b" number of leftmost characters of source "a"
4. Not that I know of.
5. len(Text.Text) How many characters the Text object is currently displaying. len(xml...) is how many characters the source text is. When they equal each other, that means what you are displaying is the entirety of the source text, and therefore there is no need to continue adding one character to display.