I understand that the forks are resolved by largest proof-of-work etc. but when do the miners decide to resolve a fork? Is it a network consensus or do each individual miner resolve at their own pace?
Each node will usually resolve and reorganize their local chain as soon as they are made aware of a chain with more work.
If two blocks are mined at block height N, there is a fork. As soon as a single N+1 is mined and broadcasted, any nodes that receive it will keep the block N that it builds upon, and orphan the other block as there is now one chain with more work.
This is what makes block withholding attacks possible, as an attack could broadcast several blocks at once, which suddenly present a new, longer, valid chain.