It's probably because the SELECT criteria only converts the information returned, but the WHERE clause, since it's a function on a column which means a complete scan of the table (and a very bad idea), it must resolve the values. So you may not see the error from the SELECT, but you're guaranteed to always see it in the WHERE.
"The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood"
- Theodore Roosevelt
Author of:
SQL Server Execution Plans
SQL Server Query Performance Tuning