Filters perform their work on a larger set of data that has already been retrieved from the data source. You can use them with datasets and with data regions.
Although filters are not as efficient performance-wise as query parameters which filter data at the source, there are still use cases which demand them. The obvious case is when the data source does not support query parameters. Another case for using filters is when users who require different sets of data are viewing the same report. In this case, you need to pull all of the data into your dataset so that it is available for all of the users.