If you're looking for a clear explanation of the code you posted, I can try to help with that. I posted a similar question with a hypothesis on what is happening, and waiting on an answer to verify or invalidate my hypothesis.
My question is here: Explain __weak and __strong usage reasons in SDWebImage code
To sum up, here's what I think: This code is initializing an instance of a class. But it needs to run an asynchronous block. The __weak and __strong keywords are used to ensure that the instance is still valid when the asynchronous block is running. If the instance has been deallocated, then there is no need to perform the action "setMovieDecoder".
To answer your specific question, you want to use this code pattern whenever you are running an asynchronous block that needs to update some object instance and you need that instance around to update it. Don't use this code pattern around asynchronous blocks that are simply downloading something such as sync engines.
**** Disclaimer: Check up on answers to my refined question in hopes of getting a real expert explanation of the code pattern I describe above. Hopefully I'm correct.