Hey, sorry that I missed this topic. I usually try to read everything in the mod forums but for some reason this was already tagged as being read.
The first thing you'll want to do is take a look at the xml for a faction. These are called raceconfigs. After you've created a custom faction in the workshop, go to documents/my games/elemental/race and check out the raceconfig for your new faction.
It is important to understand that the xml files have many different tags for many different containers (a raceconfig is a container). Some of these tags contain values that are simply read by the game. For example, take the <Description> tag in the Raceconfig container. Everything inside this tag will simply be read by the game, and introduced to the player when he's viewing the faction. Other tags contain references, either to game values, or (most importantly) to other xml containers.
For example, inside a raceconfig you can find the tag <StartingUnitType>. This tag contains only a reference to the internalname of something in another container. In that specific case, it references a UnitType container.
In the raceconfig, you'll see something like this: <StartingUnitType>Kingdom_Soldier</StartingUnitType>
And this is referencing the unittype container in another file: <UnitType InternalName="Kingdom_Soldier">
In this particular case, <StartingUnitType> means that the faction will have access to the referenced unit as soon as the player starts.
I would recommend that you get used to searching the current elemental files in the data/english folder for such references when you are learning. It will give you an idea of how they are connected quite quickly. Unfortunately, there is no roadmap, so you'll need to memorize what each tag references in each container.
There is also another kind of reference, which is best described as a shared variable, however, you won't really need to worry about that as you're just starting out. Just know that not all references are directly related to another container with a certain internalname, some (like <UnitModelType> inside the UnitType container) are simply variables shared with other files.