Not sure if there's really any comprehensive documentation on this, so I guess I'll just write up a summary with some of the main points for how CS+ mods work.
In CS+, mods are stored as options available on the challenge menu. Each mod is stored in a folder within the "data" folder of your CS+ installation. The "base" folder is all the game files for regular story mode, in the "CurlyStory" folder is all the files for Curly Story, in the "Nemesis" folder is the files for the Nemesis Challenge, and so forth. The listing of these mods on the challenge menu is defined in the "mods.txt" file in the data folder. Whichever mod is listed at the top of the list will appear on the main menu under main story mode, and all others will appear on the challenge menu.
The way a mod is structured in CS+ is that inside of the folder will be a folder titled "mod", and then inside of that folder will be a file called "mod.txt". This file defines what the title and description will be for the mod, whether it's a timed challenge or not, and what set of save slots it will use. Unfortunately, the game doesn't actually support more than 2 save slot sets; one for main story mode, and one for Curly Story. You can have mods share these sets of save slots, but you'll need to know what you're doing. The way the profile.dat is structured for CS+ seems to indicate that NICALiS meant to have the game support more than 2 save slot sets, but sadly this never worked.
In addition, in the folder you will put all of the modified resources for your mod. Any modified TSC scripts, sprite sheets, or tbl files will go in this folder, and their path from this folder. It can be helpful to look at the existing challenges for examples to see how this works. For any game files that are absent from your mod folder, the game will load scripts and sprite sheets from the "base" folder.
Plus Porter can help make this process of porting your mod to CS+ a bit easier, by letting you gather all of these modified resources, and create the mod in this folder structure. It can also handle the process of modifying the "mods.txt" file and making the mod appear on the challenges menu. In addition, if your mod uses modified sprite sheets that still contain NICALiS graphics, then Plus Porter will scan your image, filter out those graphics, and make a reference to where in the base game those graphics are, so that when you apply the port, it will insert those NICALiS graphics back into the image, thus letting you distribute patches for mods without distributing NICALiS graphics.
Note that there are a considerable number of limitations to CS+ mods:
- The only hex edits that can be carried over are the weapon data, the wave data for playing music, and the map data
- The mod may not have any more than 95 maps (you can try to force it by putting a custom stage.tbl file in the folder, but if you try to <TRA to that extra map in-game, the game will crash)
- The mod may not have any ASM hacks
- The game will register org music files in your mod folder, and I think maybe "New" music files as well, but it won't register custom "Remastered" music files
Admittedly, I think I broke a couple of things in the last couple releases of Plus Porter, so if something isn't working right, you may want to go back a couple releases. I know that at one point, one of those releases was pretty stable. Unfortunately, I'm not really feeling up to setting aside the time for fixing these issues, sorry. As some of the other people have pointed out, CS+ modding is very constrained, not very rewarding, and has very little demand, especially now. There was a little bit of demand for it within the first few years of CS+ being released, but that's kind of died down at this point. A large part of why I made Plus Porter was because I had a bunch of people asking me to port my fourth ending mod (which, it's hard to believe, I first released 9 years ago today as of writing this post), and now that that demand has been satiated, there's not a whole lot more demand for doing extra things to support Cave Story+ modding.