Update to 1.12.2, this thread is going to be locked by a forums moderator later if your don't. 1.7.10 is not supported on this forum and 1.8.9 support is going away soon.
The proper way to do it is in your ModelRegistryEvent or in a wrapper method in your ClientProxy. All Items have a model so there is no reason to have an IHasModel or have the ModelLoader.setCustomModelResourceLocation in your Items class. Especially since most Items will have a single model registered to them.
The only thing you can really do is remove mods until you find the problematic one, make sure all of your mods are up to date, and only download mods from trusted sources, I recommend CurseForge, don't use 9minecraft.
5x1x5 space, I assume he is making a Terraria mod since he used it as an example. This would mean decently sized generations. Also the likely hood of you building anything in the end when the Ender Dragon is not that large.
Yes, but you would have to handle that generation yourself as if a chunk is already generated it won't generate again.
Yes, using a method in the EntityLiving class called canSpawnHere you can return false if there is anything that would prevent the entity from spawning. As for Items look at the spawn eggs they spawn entities.
Why not just generate them anyways? It would suck to have built this awesome house underground kill a boss that spawns a structure and then go back to my beautiful house that has just been built over with a dungeon.
If you are going to have animation use a FastTESR and not a normal TESR. It actually does most of that code for you and it is more efficient. You to @_Cruelar_
Where are you downloading them from? Hopefully curse forge or the mod authors page. You can talk to the mod author about this, once again coremods are not supported here.