Oracle function based index is not used in query
You can logically see that the index would narrow the scope of the count, but the database can't make the same determination.  To use a function based index you need to use the function itself in your query.  Assuming the data is such that the index will be useful, something like this should cause it to be used:

SELECT COUNT(val1) WHERE CASE WHEN col1 = 3 THEN val1 ELSE NULL END IS NOT NULL;