Q: What would be the best ways to copy a document to:
1. Another list or library in the current site
2. A list or library in another site in the same Site Collection
3. A list or library in a different Site Collection
4. list or library in a different farm
Another list or library in the current site
You could use the Copy Item in this case as it works within a site. It supports only lists. Or Copy to SharePoint for libraries.
A list or library in another site in the same Site Collection
Copy to SharePoint for libraries. To 'copy' a list item outside the current site, you would need to use the Call Web Service action to create a list item in the target list by calling lists.asmx. See http://msdn2.microsoft.com/en-us/library/lists.lists.updatelistitems.aspx for more information.
A list or library in a different Site Collection
A list or library in a different farm
You can use Lists.asmx across a farm, but that only support list items. Copy To SharePoint does not work across a farm (this is because it uses the SharePoint Object Model API which is farm specific).