What are differences between search_after and range filter?

Those two things are something completely different and cannot be compared.

A range query allows you to filter for documents where a field value is inside of a certain range. It allows you to reduce the total number of documents being returned.

The search after functionality allows you to do deep pagination with much less resource than specifying from/size parameters,as the search after parameter is basically a pointer where to start the search for the documents that are about to be returned. Consider it a state, that is offloaded to the client if you want, it will however not change the result set, just where the search starts.

See https://www.elastic.co/guide/en/elasticsearch/reference/6.3/search-request-search-after.html