Why is this filtered index not only not used but errors when I try to force it
We found that this error occurred because forced parameterization was on at the database level. For other readers  who want to reproduce it, use Kenneth's sample code in a database with this setting on:

create database filterme;
GO

alter database filterme set parameterization forced;
GO


For parameterized queries, SQL Server doesn't want to cache an execution plan with a filtered index that might not work for other parameter values.

In later versions of SQL Server, the query plan for the "non-hinted" plan would (hopefully) show an "unmatched indexes" warning to alert you better to this. That just didn't exist in SQL Server 2008R2. (Note: I just tested on SQL 2016 and am not seeing the unmatched indexes warning, need to look into more why it isn't showing up with this sample code.)

To get the query to work without changing the database setting, you can use an "Option recompile" hint in queries. That works because it instructs SQL Server not to cache the plan for re-use.