Adding New Monsters
You can add new monsters in JSON. I’ve never really done it, so I’m mostly going to point you to the documentation at https://github.com/CleverRaven/Cataclysm-DDA/blob/master/doc/JSON_INFO.md. but I’ll throw in a few more notes.
Monster JSON is stored in data/json/monsters/ and data/json/monsters.json.
Monster special attacks are stored in data/json/monsterattacks.json, but a lot of monster special attacks are hardcoded in C++ so I believe that file is really sparse.
Monsters have two sets of item_groups associated with them. First are data/json/monsterdrops/ and data/json/monster_drops.json, which contain the items that monsters such as zombies drop when they die, and are standard item groups defined by https://github.com/CleverRaven/Cataclysm-DDA/blob/master/doc/ITEM_SPAWN.md. data/json/harvest.json contains information on what you get when you butcher a creature. This file is under very active development right at this moment, and I really have no idea how it works and as far as I know it’s not documented yet. You can look through it and try to figure it out.
monsters also have a monstergroups JSON object, which controls what monsters spawn where in a random function. This is partially documented in doc/MONSTERS.md, so I refer you back to that.
Finally, monsters have factions, which are defined in data/json/monster_factions.json. These objects are described in https://github.com/CleverRaven/Cataclysm-DDA/blob/master/doc/JSON_INFO.md.