The manifest is the first and only thing the game will read inside any folder or .smod file in the mod folder. It is the starting point to everything. There you list everything needed in your mod, the game will read it and now will know where everything is in your mod.
One important section of a manifest (although completely optional) is the “alias” section. There, you create “nicknames” for your most used files. Ex.instead of adding the complete path (like /mymod/path/file.json) to whenever I need that file, I can type an alias in that section and use it like mymod:myalias. You will see in the default stonehearth mod things like stonehearth:tree:oak or stonehearth:food:berry. Those are alias of real files in the mod. It is just to help and make things easier for us modders. It is completely possible to use anything without alias.
Then there is the “mixinto” section. It is actually simple. On the left side there is a file (or alias of a file) that you want to change. On the right side of that line you put the file (or its alias) with the changes you want. The game will add the contents of your file to the original file. In case there is overlaps, it will replace the old values with the new from your file.
In my case creating biomes, one important file for me is the biome index file, it lists all biomes the game has, to show in the biome picker. So I create another file similar to the original, but in it I put a line with my biome. Using the mixinto, my content gets added to the original. But only if my name is different, if I try to add another named temperate, it will replace the one in the original. That’s basically how mixinto works.
Mixins are like templates files. If you need to copy the same thing over multiple files, you can put it all in a “template file”, then when you need its contents, you add it as a mixin, in another file. A good example is with the trees. The game has a file with everything all trees have in common (they all have an axe symbol when you harvest it and the scale of its models are always full scale). Then all the trees files has at the start a line like “mixins”: “stonehearth:mixins:tree” . This is just like a copy and paste. Everything in that mixin ends up in the file you added that line.
Overrides fully replaces one file by another. So if I override the oak file, every time the game calls it (when generating a world or when a player plants it) it will instead call my file, the one that overrides it. One example is a mod adding a winter theme to the game. It should override all the trees with a snow version and that’s it, when the game generates a world, it will be all snow trees.
One good place to start is to download the startermod_basic. And mess with its contents.