First off you need a mob to replace it could be Wolf,Zombie,Ocelot,more
Second do this command "/summon armor_stand ~ ~ ~ {NoBasePlate:1b,ShowArms:1b,CustomName:"(Custom Name Here)",CustomNameVisible:1b}"
The " is Needed in the CustomName part
And if you want it To be small just add "Small:1b" there should be a "," if you put it next to another DataTag
Third you need to summon your Mob then paste this command on a repeating command block "effect @e[type=(mob Here)] invisibility 2 1 true
you could add more effects if you'd like to
Fourth Customise your Armor_stand with anything
"Go to minecraft-heads.com to get heads"
then get another repeating command block
paste in "tp @e[type=armor_stand] @e[type=(mob Here)]"
oh and if you'd like to name your Custom Mob change the "@e[type=armor_stand]" to "@e[name=(Name Here)]"
if you are in an Overworld then do the same thing to the mob change it to "@e[name=(name here)]" because it won't work because there is a lot of mobs in the
Overworld
then that's all thank you and goodbye