I don't know what FSG is, so I'll try to explain with my own example:
Blocks can be used for parallel processing of approvals when the number of approvers is not known in the beginning of the workflow, lets say a document needs approval per company code in it's items:
If all the items are from company 1000 only it's manger needs to approve,
If there is also an item of company 2000, two managers will need to approve the same step.
you will need to create a table of the distinct company codes for this scenario.
Now, for multilevel approval you can calculate the levels in the beginning and then use a loop with an index. or you can use conditions in the workflow template itself if they are not too complicated:
IF FSG = 'X' true -> second approval step / false->end.