If (AngleBetweenPoints(GetUnitLoc(cast), GetUnitLoc(targ))>30 and AngleBetweenPoints(GetUnitLoc(cast), GetUnitLoc(targ))<60)
Practically you check if the unit is in the angle between 30 and 60 of the position of casting unit and the targeted unit. If you want to base it on the facing of the unit you can use instead of GetUnitLoc(Cast) the FacingAngle(cast).
yours has two units daelin. I'm not detecting the random angle between two units. I'm detecting the change in my guy's angle. I want to check if he's facing (180 +/-75 degrees) from where he was facing last time the trigger checked.
I'd trying to make it so that he slows down if while he's moving, he turns around.
Still i think you're could still work with a little change in the units.
Get the Facing Angle into variable a. Then after a wait (depends on the duration you want) check if the difference between the current facing and a is less than or equal to 75 or something.