There are three issues here.
First is the appearance if the [u' characters. This is a bug in the raw_field function. I have submitted a fix.
Second is the assumption that you need to use raw_field. The only field (column) that is sorted alphabetically by default is tags. All custom multiple-value functions are sorted only when displayed (usually). When used in templates they are not sorted. Because of this, and because you are manipulating a custom column, you can use
Code:
{#characters(0,1,\,)}
or
Code:
program: sublist(field('#characters'), 0, 1, ',')
The third is the column type you are using for #characters. Because these are character names and because (if I understand correctly) you want to preserve a known order when editing that column, you should check the box "Contains names" in the #character column definition. The separator will become ampersand (&) instead of comma and the values will be displayed in the order you entered them. If you do this then the main_character template becomes
Code:
{#characters:sublist(0,1,&)}
If you check the box you must change any template that uses a "list" function with a separator of ',' to use '&'.