You can probably use this negative lookbehind:
$arr = preg_split('/(?<!(?:string1|string2)):/', 'string1:string2:abc:xyz-----:abc');
var_dump($arr);
OUTPUT:
array(4) {
[0]=>
string(15) "string1:string2"
[1]=>
string(3) "abc"
[2]=>
string(8) "xyz-----"
[3]=>
string(3) "abc"
}