Dispatch_async schedules whatever in the block between {} to run on the queue specified.
So in case A, the code is traversed without the for loop being executed. Instead, the forloop is moved to the block specified.
In case B, you are scheduling to run the code inside the block 10 times on a different thread. Frankly I have not seen this kind of combination.
If you are new to iOS, you will mainly use blocks in the context of doing some computing intensive work in a different queue than the main queue. This allows the UI to remain responsive (you can still scroll the table for example)... And then when you need to update the UI, you execute a block like the one above but calling the main queue to update your UI.
Hope this helps.