Let's say we have some distributed developers in different countries working on the same sharepoint project.
Problems that they might face including (but not limited to):
are there any guides, best practices for such scenario?
You want to use the TFS - Team Foundation Server 2010. Perfect for distributed development and covers all your 4 points. However point 4 is a standard Sharepoint feature and you only need to set permissions for the central admin / Sharepoint Designer.
The Team Foundation Server integrates seamlessly with your Visual Studio Development environment and you can even have a build server, so your integration environment is always up-to-date.
Also take note for debugging: You can make use of remote debugging, so even your offshore developers will be able to debug on the server (or use remote desktop).