I thought we had some kind of reference page for this in the manual, but all I found was this, which is not quite the full story:
This old post of mine goes into more detail, though is a bit out of date:
Basically: projects/ has an ignorable .resources/ folder.
All other folders in projects/ will be scanned - if they contain a valid project.json manifest, then they make up an Ignition project. The name of the project will be the literal name of the folder on disk.
Below each project directory, the next folder is the module ID, and the folder below that is the resource type ID. Those two folders make up a unique identifier for every Ignition project resource.
After that moduleID/typeID/ folder pair, things split into two paths.
If there is a resource.json file, then it is a so-called "singleton" resource - there can be either zero or one of any given singleton resource, and they have no name.
If there are any folders, they define the path to the given resource, ending with a folder that becomes the resource name and contains a resource.json file in it.
That resource.json file is described in the manual page linked above, but the most important entry is the files array that tells the resource system about the other files on disk.
So putting it all together: data/projects/Test/ignition/global-props/resource.json
Is the path to a manifest file for the global-props resource (owned by the core Ignition platform, not any module) in a project named Test.
data/projects/CoolProject/com.inductiveautomation.perspective/views/myView/resource.json
Is the path to a manifest file for the myView Perspective view in a project named CoolProject.
By contrast, data/projects/CoolProject/com.inductiveautomation.perspective/views/myFolder/myView/resource.json
Is the path to a manifest file for a view myView inside a folder myFolder in the same project.
The short answer to your question is:
Everything in that directory is important to you except the .resources/ folder.
Add an arbitrary file as a sibling next to another resource and add it to the resource.json. This runs the risk of us wiping out whatever you added (depending on which code path we use internally, we may replace all the data files inside a resource; that'll vary by resource type and the way you're editing them)
Stuff arbitrary meta data in the attributes inside the resource.json. This should be safer, it's much less likely that we'll replace all the attributes under a resource. The downside is that JSON is a really poor format for multiline strings, so the editing experience will be terrible without some editor heroics.
There is a documentation attribute on all resources - right click in the project browser. That's useful, but not necessarily a complete solution, and it's also hard to consume outside of the project browser.
Improving the tools to add your own documentation to resources is something we want to do first party, but no idea of a timeline.