1) Со стилями тормоза из-за того, что каждый раз итему переприсваивается стиль, и начинается реальный кипеш там под капотом.
Вполне можно было просто подложить rectangle и просто задавать его цвет у каждого item. Ведь на самом деле в стилях вы делаете именно это, просто меняете цвет rectangle который где-то там в стиле.
2) Зачем создавать динамически все контролы, если можно все оформить в TFrame и просто создавать его и класть хоть в listBox хоть в ScrollBox. (Это по сути одно и то же почти)
3) Все зависит от количества элементов. Если их 30, то listBox вывезет. если 300 - то ни listBox ни ScrollBox тут не вывезут.
Тогда надо брать ListView. Там все чуть сложнее, но зато нет проблем с производительностью.
на всякий случай, не нужно никаких UTF8ToString
var
st: TStringStream;
...
st := TStringStream.Create('', TEncoding.UTF8);
http.Get(URL, st);
m1.lines.text := st.DataString;