Let's go straight to your answers
1) We use the diverging gateways to support multiple outgoing edges. that means that you will end up having a task that goes to a diverge gateway that can go to three different tasks. In our opinion it's clear and you can easily understand in which situations your execution will go to one or just to all of the task after the gateway.
2) What do you mean with revisted? the same task executed again and allowing the person to modify the information that was created there? yes you can do that.
3) this is a simple query in my perspective you can create your own query or define that the loggers store that information for you so then you can easily retrive it.