Rene gave good advice - I mostly repeat what he said in different words. I have gone partly the same route myself alone, but certain problems come even without collaboration. I have edited projects in two different locations through git, so it’s partly similar to collaboration.
I, too, recommend a version control system and a centralized (in practice 3rd party) server. You have to be careful to always remember that what you are doing is local and you must always share the changes to the version control server.
It’s a well known fact that 2D (or 3D for that matter) data isn’t a good fit for collaboration through a version control system. Conflicts arise and they can’t be merged in any practical way. Therefore you can’t do parallel work on one file. You must isolate your changes into one file at a time and take care that nobody changes that file meantime. Schematics are better in this respect because, as Rene said, you can use hierarchical shematic files. Something similar may come for layout, but not in version 5.
Even without collaboration I have noticed that
Needs grow all the time, assets grow, maybe you have to have a clean start at some point, but try to anticipate. Don’t be afraid to create a new named library when you have only one or two symbols or footprints in it. Moving components from one library to another is also a problem.
One problem which I haven’t solved is what to do with updated symbols/footprints. In KiCad 5 symbols and footprints work differently so they don’t have the same solution. But in general you may make even critical changes to footprints and want to propagate them to new future versions of old designs, but it’s not possible to do that automatically or even semi-automatically. There’s no way to track down which footprint is used in which project. You should invent a good way to communicate critical changes (which affect for example manufacturability or assembly) with the team or even to yourself so that when you make changes to an old project you can choose what updates you take in from the libraries.
Another related problem is that you may have old and new versions of a footprint in a project if you’re not careful. Possibly it’s a problem, possibly not.
Copying from one schematic to another really isn’t possible in v5 through the UI, except through reusing hierarchical sheets. It’s possible in the development version. I’m not sure if this works, but you could try adding even a main sheet of another project as a hierarchical sheet for the new project, then copypaste inside the new project and abandon that sheet.
Reusing both schematic and layout in a controlled manner isn’t possible, either, in v5. There are tricks which use manually copying parts of text files, but it’s difficult.
I don’t think having different OS’s is a problem if you share through version control system, or even through a shared drive. The projects or libraries don’t depend on OS or hardware.