Capito, quindi qui il problema. In apparenza non mi sembra errato.
Nella libreria:
void lv_obj_add_style(lv_obj_t * obj, const lv_style_t * style, lv_style_selector_t selector);
Perciò questo:
lv_obj_add_style(labels[lastPayload.msg], colori[1], 0);
visto che colori[1] = &style_purple dovrebbe equivalere a :
lv_obj_add_style(labels[lastPayload.msg], &style_purple, 0);
@cotestatnt effettivamente il suo problema è sul secondo parametro, sul primo gli funziona senza l'uso di array per lo style.