Well, if you want a definitive answer, the files you need are:
a. PROJECT.pro : this may require some modifications to the list of libraries used; in particular any symbols used should be copied to a local library and that library must be specified in the .pro file. All other libraries may be ignored since any relevant symbols from them should be copied to the local lib - naturally if the local lib already exists it shouldnāt overwrite itself. If the PROJECT-cache.lib is up-to-date then the new local lib may simply be a copy of this.
b. PROJECT.sch : this will require modifications to point to the newly created local lib rather than any other libs which may have been used during design. The exception is the PROJECT-cache.lib, which should be updated before copy operations proceed. If PROJECT.sch is hierarchical then the referenced files must also be copied and modified to use the local lib.
c. MY_LOCAL_SCHEMA_LIB.lib : well, whatever name you want really - this should be the schematic lib to be shared. At the moment it is a single file; as current work on eeschema progresses we expect this to become a directory
d. PROJECT.dcm : this only needs to be copied/modified if itās actually used, otherwise it can be ignored.
e. PROJECT.kicad_pcb : this must be copied with all MODULE instances modified to (1) reference footprint files in a local directory and (2) reference any 3D models in a local directory. This starts to get tricky because footprint files canāt be blindly copied to a single flat directory - for example there may be 2 different components with the same file name but different absolute paths: ${PATH_A}/GENERIC.kicad_mod and ${PATH_B}/GENERIC.kicad_mod. The same goes for any 3D model files which are referenced - they cannot necessarily be simply copied to a flat directory structure.
f. MY_LOCAL_FOOTPRINTS : a directory needs to be created to hold all referenced footprint data
g. MY_LOCAL_3D_MODELS : a directory needs to be created to hold all referenced 3D models
h. fp-lib-table : rather than blindly copy this file, a new file must be created to refer to the local footprint directory
Thatās all I can think of for now. There is no point in copying the NET file since that could have any arbitrary name and is easily regenerated anyway. Other ancillary files like manufacturersā documentation for parts etc. would need to be handled separately.
Itās no small task to do this in software, especially not in KiCad with the way the code is currently structured. It can be done though and is a feature I imagine many people would find useful.