To create a completely new hero, create a custom sovereign with the appearance you want and move their file from the Units folder to the Mods folder (or if basing on a monster, copy a monster from CoreMonsterUnitTypes.xml but note that LevelMilestones above 1 don't appear to make any difference to monsters who are champions) and delete all the lines that refer to Sov-only and faction only abilities such as summoning starting units, AI player strategy/related traits as well as skills you don't want them to have etc. Leave all the graphics and sound options. Make sure the "1" in the <IsSovereign>1</IsSovereign> tag has been changed to a "0", and the "0" in the <IsChampion>0</IsChampion> is changed to a "1", and that you have in the hero unit definition all of the following (except the first one, which is optional, and some of the others which are not needed PROVIDED you get them from a Quest or Random Event):
<Class>ProfessionTypeHere</Class> (this is optional, and allows you to give a Champion one of the Sovereign professions to start with, though I am not sure if all of these apply faction wide if a champion rather than a sov has it, this would have to checked)
<SpawnRating>StartingHeroLevelHere</SpawnRating> (this number is 1, 3, 5, 7, or 9 or higher if you have edited CoreGameEvents.xml and made some fame milestone rewards give a <Level>LevelNumberHere</Level> hero instead of -1 which currently applies to fame milestones of 800 and above and gives a completely random hero of any level, if this line does not appear with a correct matching SpawnRating from hero file and <Level>LevelHere</Level> from CoreGameEvents.xml for that fame milestone then this hero will never show up from a fame milestone)
<NPCSpawnLikelihood>100</NPCSpawnLikelihood> (you can replace the 100 with a lower number if you want this champion to appear less often than others, which is not really a good idea if you have lots of heroes - if this line is not present I don't think the hero will appear at any fame milestones)
<Allegiance>PutKingdomOrEmpireWordHere</Allegiance> (Put Kingdom or Empire between the opening and closing Allegiance tags instead of the placeholder words, note you are allowed to have normally empire or kingdom races as the opposite side, for example Urxen as Kingdom allegiance or monster races as Kingdom or Empire Allegiance - if it doesn't have a suitable Kingdom or Empire Allegiance it will never show up in fame milestones but can still be used as Quest or Random Event heroes)
<CreatureType>ChampionOrMonsterTypeHere</CreatureType> (If this hero is from one of the playable races, Champion would normally replace the placeholder text, if it is a monster the words (without commas or brackets) Beast, Elemental, Undead, Twisted or Construct (not sure if Golem is one too or whether that's only in mods) would be here instead and these are used to determine if extra damage is applied to them by certain weapons or abilities or whether abilities like Beastlord work on them, also there are some abilities that do extra damage to champions, I'm not sure if they check whether a hero is a champion or sovereign or not, or just whether they are Champion creature type)
Customise the built-in equipment (any non-consumable item can be made as <Equipment>EquipmentInternalNameHere</Equipment> to be built-in or "soulbound" to the hero - that equipment will not be able to be sold and will appear when nothing else is equipped manually into that slot - you can even equip chain or plate armor or higher level requirement items as built-in equipment even if the hero does not start with Chain or Plate proficiency or the minimum level - consider this equipment similar to clothes - it applies when nothing else replaces it, but will always be there if nothing else is equipped to that slot - note I think if trinkets are in-built/soulbound they will always count their bonuses but will not be replaced or overwritten by manually equipped trinkets, like how henchmen built with trinkets work)
Note for previous point: If you are using built-in/soulbound equipment you need to delete the clothes for that part of the body, otherwise it might not work. Clothes in LH are essentially armor pieces with no bonuses, and you can't have two pieces of soulbound armor in the same slot. If you have a soulbound item and an equipped transferable item in the same slot the transferable will take precedence, but the soulbound item will return if there is nothing in the slot. But you can't have two soulbound pieces of armor (or weapons I would think) in the same slot or only one of them will apply.
Equipment that you want to be transferable is created as <AutoCreateEquipment>EquipmentInternalNameHere</AutoCreateEquipment> and it will be auto-equipped if possible, even possibly violating level or chain/plate requirements, though if you want to do this it is better to create it as built-in/soulbound equipment (ie. use <Equipment>EquipmentInternalNameHere</Equipment> instead). If you have any transferable item that the champion does not meet the level or armor requirements for, if you unequip it at ANY time if will NOT be able to be re-equipped until the requirements are met.
Note, transferrable items include all one-use items including scrolls, healing items, tomes etc. These items don't appear to work, or even appear on the hero, when in-built - in other words you cannot give a one-use item that can only be used by the hero that starts with it.
Customise starting traits.
That's a brief runthrough of what I know about making or customising heroes. Hope this is helpful to anyone interested in editing or creating new heroes!