Puede que hayas agrupado mal las comparaciones en los parentesis y por eso no te de el resultado deseado.
Según lo que has puesto si elimino los parentesis que encierran una única comparación me queda algo así:
Código SQL
[-]
a.CALLTYPE = 'I' OR (a.CALLTYPE = 'O' AND a.RESULT IN ('10','18','1004') AND a.PHONE <> '')
entonces te mostraría todas las llamadas de tipo "I" o todas las llamadas de tipo "O" cuyo resultado esté en 10,18 y 1004 y el teléfono no esté vacio, tienen que cumplirse las tres condiciones. ¿es eso lo que realmente quieres?, si es así no le veo nada raro.
Saludos.