1. What you want will not work with an array, because you'll have to iterate it every time you need to get Punch or Kick values.
I suggest you get rid of the array and change your JSON to this:
{
"Skills": { "Punch": {"baseDamage":1 }, "Kick": {"baseDamage":2 } }
}
This will allow you to access values by direct path like "Skills.Punch.baseDamage"
2. I have lots of separate JSON objects in my project and load data into them at the beginning of the game with multiple AJAX requests.
3. There are no built-in ways to sync data between different JSON objects, you will have to do this with code. For example, instead of directly changing damage value in JSON1, make a function "UpdateDamage", which will change it in both JSON1 and JSON2.