I won't be able to make a further look at this topic, but let me just suggest something about one of your inner loops, with your variable names retained for clarity:
Do[g = DeleteCases[Table[If[Signature[g[[l]]] != 0,
g[[l]] /. {g[[q]] -> g[[l]],
g[[q, {1, 2, 4, 3}]] -> g[[l]],
g[[q, {1, 3, 2, 4}]] -> {}},
g[[l]] /. {g[[q]] -> g[[l]],
g[[q, {1, 2, 4, 3}]] -> {},
g[[q, {1, 3, 2, 4}]] -> {}}],
{l, Length[g]}], {}],
{q, z^2 (z^2 + 11)/12}]
Also, you really should look into using the group theory stuff to shorten your code. Here is a variation of the approach in my first post:
{achiral, chiral} =
GatherBy[DeleteDuplicatesBy[Tuples[{"H", "F", "Cl", "Br", "I"}, {4}],
DeleteDuplicates[Permute[Sort[#],
AlternatingGroup[4]]] &],
Abs @* Signature];
halomethanes = Join[achiral, chiral, chiral[[All, {1, 4, 3, 2}]]];
then you can get your color swatches like so:
halomethanes /. Thread[{"H", "F", "Cl", "Br", "I"} -> {Cyan, Pink, Green, Brown, Red}]

Finally, you don't need the overhead of building a Molecule[]
object just to compute the molar mass afterwards:
ElementData["C", "AtomicMass"] + Sum[ElementData[e, "AtomicMass"], {e, #}] & /@ halomethanes