As you've discovered it's not a straight forward process, and it also depends on how your project is configured. For example, do you use relative or absolute path names to custom libraries?
On top of that there are also some gotchas when you try to mix projects, for example during updates later. The first I think of is that KiCad by default uses "timestamps" or "UUID's" to make the match between schematic symbols and PCB footprints, instead of the RefDes (such as R32 for a resistor or U5 for an IC).
The best direction is probably to make a complete copy of the existing project into another directory, but because of the path issue (and probably other) issues it's not a straight forward copy.
There are a few (party) automated ways to do it. First there is a "KiRename" script for renaming projects. You can start by looking at that script and what it does:
https://html.duckduckgo.com/html/?q=%22kirename%22&norw=1https://github.com/bobc/KiRenameApparently this script has not been updated for a few years, so it may be (partially) out of sync with current KiCad versions.
Another option is to create a template from your existing project.
The steps roughly are:
1). Set up a custom directory for all your future personal templates.
2). Copy your existing project to the template directory.
3). Add some html, some graphics such as an icon. (See the existing templates on your system as example).
4). In KiCad's project manager select: File / New / Create Project from Template.
The last option I want to mention is to:
1). Copy the whole project to another directory.
2). Delete all files which can be generated by KiCad (netlists, backup files, gerbers, etc)
3). Open the remaining files in a text editor, and look for path names and directory names, and mend as appropriate.
With this last option you will probably do the work manually that can be done by the KiRename script.