Here, you have to use the Split
function on the string which will break the string in the set of words using the deliminator and return you a list. Try this code:
trigger MultiTaskCreate on Task (before insert) {
Map<task, List<Id>> taskToUsersIds = new Map<task, List<Id>>();
for(Task ts: trigger.new){
if(taskts.UserListField__c != null){
taskToUsersIds.put(ts, ts.UserListField__c.split(','));
}
}
List<task> taskToInsert = new List<task>();
for(Task t : taskToUsersIds.keySet())
{
for(String userId : taskToUsersIds.get(t))
{
Task task = new Task();
task.Assigned_To__c = userId; //You will get the UserId here
task.Status = 'Completed';
task.Priority = ts.Priority;
task.Communication_Type__c = ts.Communication_Type__c;
task.Subject = ts.Subject;
task.Name__c = ts.Name__c;
taskToInsert.add(task);
}
}
if(taskToInsert.size() > 0)
insert taskToInsert;
}