Q1. Check the Spells Section. It has several save/load systems in both GUI as JASS. If you want to make your own, check them out to see how they made them.
Q2. Make a Game Cache. When the game is finished, set a Boolean variable named GameFinished = True and add that variable in your Game Cache. At each level start, open the Game Cache and check if GameFinished = True. If it is: Unlock your secret character.
Q3. Just like he said: Go to the Object Editor and click the Abilities tab. You'll be able to make an ability there based on a Blizzard ability. Keep in mind that you should never add 2 abilities to 1 unit that are based on the same Blizzard ability, or the unit will use a random ability of those 2.
Q4. There's another thread going on right now in this same Section. There's no real solution yet and I don't know if there's a solution, but I suggest you keep an eye out for that thread's replies.
Q5. Don't use Geazergimli2's idea. That would cause any unit to come near the tavern (which will be likely to happen, since you want them to buy heroes there) to be moved as well. I suggest you make a trigger that activates when a unit is trained, and if it's a hero from that tavern, you move it to the location you want.
Q6. Go to Scenario (in the upper tray along with File, Edit, View, etc.) and choose "Force Properties...". Check the boxes named "Use Custom Forces" and "Fixed Player Settings". The first will allow you to set forces, making forces allied, hostile or neutral to eachother and the second prevents players from changing this.
Q7. Make a dummy unit near the tavern for each player. A dummy unit is a unit that's incapable of anything except for what you want it to do and has no model. If there's a dummy unit near the tavern, there's a unit in range to buy the hero, but there's no model.
Q8. There's a button for that in the Object Editor. If you want the unit to get a glow though, you need to edit the model, but I suggest you don't do that, since you'll have to import the new model which takes file size, and there's a limit for file sizes to be hosted on battle.net of 4,1MB.