As long as all team members can pull from everybody else's local repo then opt 1 is fine, but if you have some team members who can't pull directly then you should go with option 2. Perhaps some on your team is in a remote location, firewalled, etc, but they do have access to a central server, then to be consistent, you should share branches via a central origin repo instead of direct pulls from developers local repos. If you try to use both options at the same time for different developers then things will get confusing.
For deleting branches after finishing a release or hotfix. Just make sure Bob's repo has pulled from Alice (or from origin after Alice pushed to origin) so the latest commits and has the merge with the master and develop branches, Bob can simply delete a that feature branch, as in:
git branch -d blah
You can also delete the branch on the origin repository if needed:
git push origin :feature/blah
Note the empty space before the colon; that indicates you are pushing nothing to the origin's feature/blah branch, effectively deleting it.