Using a CASE expression in the WHERE clasue like that works, but it is a bit superfluous and makes the intent less clear (IMHO).
1. SQL is getting 5 random rows that statisfy the predicate.
2. No. That that is just a predicate.
Again, no need for the case expression:
select top 5
ActualCost > 30.00
and ActualCost < 100.00