Edit tk102: stoffe -mkb- did a good job summarizing the major fields in appearance.2da for TSL. KotOR's appearance.2da also works in a similar fashion.
The heads are determined by the normalhead and backuphead columns in the appearance.2da, for each appearance type. The number this column contain is an index in the heads.2da file of which head to use.
normalhead is what is usually used, but if the player has this head an NPC using this appearance will switch to the head in the backuphead column instead.
The different model/tex columns determine how the character look (ie which model and texture to use) when they wear different items in their body slot. As far as I can tell they are:
modela/texa = underwear model.
modelb/texb = common clothes model.
modelc/texc = armor w/base defense 4
modeld/texd = armor w/base defense 5
modele/texe = armor w/base defense 6
modelf/texf = armor w/base defense 7
modelg/texg = armor w/base defense 8
modelh/texh = armor w/base defense 9
modeli/texi = new jedi robes.
modelj/texj = revan/starforge robes.
modelk/texk = new jumpsuit-like baggy armor.
modell/texl = the silly dancer's outfit.
modelm/texm = neophyte/mentor/warrior armor with skirt flap in the back.
modeln/texn = new jedi master robes with jackboots.
You'll need to specify a model for all slots representing something the player could wear or Bad Things may happen.
Some models have textures specified internally and as such have a "****" in their corresponding tex column.
The others only specify the base name of the texture without the numeric suffix at the end. The numbers at the end is used to specify the TextureVariation which is set on each individual item in their UTI to choose how it should look.
For example, the standard jedi robe for females, set in the modeli column, is the model "PFBIM" (meaning Player, Female, Body, Model I, Medium size), and it has the value "PFBI" set in its corresponding texi. Now the actual texture files are named "PFBI01.tpc", "PFBI02.tpc", "PFBI03.tpc" and so on. Which one of them to use, ie the matching 01, 02 etc number is set in the TextureVariation field in the different item blueprints.
For example normal Jedi Robes (blueprint "a_robe_08") have BaseItem set to "Jedi Robe" (35) which uses the model in the modeli column and textures in the texi column. Why? Because the "bodyvar" column in baseitems.2da for line 35 says "I".
The blueprint also has the TextureVariation field set to 4, which means it uses the "PFBI04.tpc" texture.
The label column in appearances.2da is just there to make it more easily human readable, ti's not actually used for anything by the game as far as I can tell, so it doesn't really matter what you put there for your new lines. To make it easier for others to read though it might be a good idea to stick with the standard naming convention for player models though, as:
P = Player model
FEM/MAL = Female/Male
C/A/B/H = White, Asian, Black, Hispanic
SML/MED/LRG = K1: Scoundrel/Scout/Soldier, TSL: Consular/Sentinel/Guardian
# = Unique numeric identifier