If i have a dispatcher can i do some data processing in it ( for example parsing xml) and then add to queue what i need? Is it a normal practice?
Yes you can do it in the dispatcher, basically dispatcher is to prepare the data which needs to run the process.
At which stage will be better do actions like download files from browser or unzip some data?
( tell a name of stage).
Init
How can I correctly understand at what stage I should make a critical error in the log? And an example of the reason why it can happen.
Process State - this will call the SetTransactionStatus.xaml - where it will be logged as exception. If you need some customized log you can do it in the Process.xaml for each transaction.