...
The nice thing about this is that it simplifies the approach the consumer must implement to page through the results. They typically make the first call with a "priming" fetch that specifies a number of results to return (eg. page=25) or (eg. From=1&To=25). After that they don't have to keep track of any counters, they can just use the links provided in the result set from for further navigation.
If there isn't a "previous" or "first" then you are at the beginning. If there isn't a "next" or "last" then you are at the end. For me, the "self", "first" and "last" are not as useful but I can imagine for some they are.