1) In deinem 3. code (COLORSTYLES):
Erstmal stimmt wieder der typ nicht. Du erstellst einen array aus 'COLORSTYLES*' elementen (also ein 'COLORSTYLES**'), gibst das ganze zurück, aber weist es einer 'COLORSTYLES*' variablen zu.
Abgesehn davon hast du glaub ich ein * zu viel. Wenn ich das richtig versteh, willst du eine Liste an COLORSTYLES-elementen und nicht pointern machen. Das wäre:
COLORSTYLES ColStyles * = sys_malloc(sizeof(COLORSTYLES) * NumStyles);
2) STRING* array problem: wenn du in lite-c auf members von einem arrayelement zugreifen willst brauchst du klammern.
(ColStyle[0]).string = blabla;
3) will noch anmerken dass die strings zu dem zeitpunkt immernoch nicht vollständig initialisiert sind. dazu brauchst du noch ein str_create()
Allgemein würd ich dir empfehlen dich ein bisschen in die pointer/array geschichte einzulesen.