Do you need to create different animation for each GameObject?

If I am making an FPS game with different skins and, do I need to make another animation for every skin for the gameObject, and do I also need to make different animation for every different gun it holds?

No you do not luckily! Just add an animator component onto the other skins/guns and drag in the animator thing in your assets (not animation!) into the controller section on your animator component. That should do the trick!