1. Ты создаешь se1.Value + 1 поток, каждый из которых выполняет твой 0..5 цикл в Proba.n1. Соответственно, у тебя и пишется в memo пять единици от каждого из потоков, потом 2 - снова от каждого из потоков. Твоя I из for I := 0 to 5 do - не общая для всех потоков, а своя для каждого. Если нужен аналог глобальной переменной, добавь в описание класса Proba static-поле, вроде
private
class function GetStaticField: string; static;
class procedure SetStaticField(const Value: string); static;
public
class property StaticField: string read GetStaticField write SetStaticField
2. Но это все фигня. Самое страшное тут:
Form1.mmo2.Lines.Add(s);
за изменение GUI-компонентов не через Synchronize вообще канделябром можно получить в самом неожиданном месте.