unowned is for when that reference will continue to exist through the times that your closure can get called. I've found that in most cases, the user can just navigate back out, and so that reference can't be guaranteed, unless for example viewWillDisappear cleans it up, so weak is generally more appropriate.
And when they are useful: sometimes you'll have blocks associated with objects that should only be called during the lifetime of said object. That'd be an instance to use unowned, since you'd generally want that guarantee in a scenario like that and a crash-exit on improper memory access can be preferred over being thrown into a invalid or unpredictable state.