lock(SyncObjects.ListSyncer) // лочим для многопотока
{
// берем первую строку из списка, кладем ее в переменную и удаляем строку
var list = project.Lists["имя_списка_со_строками"];
project.Variables["переменная_со_взятой_строкой"].Value = list[0];
list.RemoveAt(0); // удалить строку из списка
// разбиваем строку из переменной по нужным переменным
string stroka = project.Variables["переменная_со_взятой_строкой"].Value;
var data = stroka.Split(';').ToList(); // в кавычках находится разделяющий элемент
project.Variables["XXX"].Value = data[0];
project.Variables["ZZZ"].Value = data[1];
project.Variables["YYY"].Value = data[2];
// раскомментировать, если надо дописать в конец списка данные из переменной
// string text = project.Variables["переменная_со_взятой_строкой"].Value;
// list.Add(text);
}