Visual force is pretty good at auto-casting values to the correct object type. For most usages you can probably just declare the parameter as type Object. For your particular example I might use:
<apex:attribute type="Object" name="var"
description="Variable to store results in."
ISBLANK is for Strings - instead, you can directly check for true or false (NOT expects a boolean)
The whole thing could be written (you can leave NOT out):
ISCHANGED([FX5_WorkOrder_c].SandSafe_Customer__c ) &&
[FX5_WorkOrder_c].SandSafe_Customer__c = TRUE
Running this through my own execute anonymous window, I was able to reproduce the issue.
Turns out that the problem is indeed the missing colon : in your query.
When using a variable in a query (typically called a bind, or binding, see relevant documentation), we need to use : to let Salesforce know that it is a variable.
So the correct query would be