Originally posted by Rtas Vadum here
You can find Rtas Vadum's profile here.

Not sure if something like this is needed, but im sure this helps someone.

Heads.2da

One of the easier 2da files to edit, since there aren't many columns to make sure that they have entries. First, the column names, and what they are for.

Row Label= Simply a number, but it matters when you wish to add a new head, since the appearance.2da needs to make reference to this number.
Head=This is simple a label, it does not really matter what is put here in TSL(you will want to have something saying what head it is. If in doubt, follow the scheme the vanilla game uses) but for KOTOR, it specifies the normal lightside texture.
Alttexture=The normal or "Light Side" texture for a head model.***
Headtexvvve(Very, Very, Very Evil)=Darkside texture 4
Headtexvv(Very, Very Evil)=Darkside texture 3*
Headtexve(Very Evil)=Darkside texture 2*
Headtexe(Evil)=Darkside texture 1*
Headtexg=**
Headtexvg=**

*For TSL, the first, second and third darkside texture is the same, but this is only true for most of the heads. KotOR names different textures in each column, but you can use the same texture for more than one column.

**I would assume that these a leftover from a previous game using the same engine. I'm not precisely sure what they do, but I would guess that if a value is placed there, they would act as the lightside transitions. Likely not used in the vanilla games, because the SW universe doesn't really mention any kind of changes happening to those set firmly on the path of the light.

***This column only exists within TSL, and is used to specify the normal, lightside head texture. Additionally, it can also override the texture information within a model, making it use whatever is specified here. This avoids hex editing the model.

Portraits.2da

Like the heads.2da, this is easy to edit as well, but in some ways a bit harder, since this 2da defines a few things that, unless the right value, will make your head mod very frustrating.

Row Label=Simply a number.
baseresref=Names the normal or lightside portrait.
sex=Defines the player Gender. (0=Male, 1=Female)
appearance number=Refers to the Scout(KOTOR), or Jedi Sentinel(TSL) line in the appearance.2da.
Inanimatetype=**
plot=**
lowgore=**
appearance_s=Refers to the Scoundrel(KOTOR), or Jedi Consular(TSL) line in the appearance.2da.
appearance_l=Refers to the Soldier(KOTOR), or Jedi Guardian(TSL) line in the appearance.2da
forpc=Defines weather or a head is for player use. (0=Isn't for player, 1=Is for player)
baseresrefe(Evil)=The first darkside portrait. Usually "po_texname.tga"*
baseresrefve(Very Evil)=Second ds portrait*
baseresrefvve(Very, Very Evil)=Thrid ds portrait*
baseresrefvvve(Very, Very, Very Evil)=Fourth ds portrait

*Like TSL's head.2da, this does something similar, naming the same portrait for the first three baseresref columns. Some heads do not, but most of them do. KOTOR's portraits.2da names different textures for each column, but can use the TSL naming style.

**Not sure what these are for, but it may be a part of the engine not used by KOTOR or TSL.