RichFaces iteration components are compatible with standard JSF data model class javax.faces.model.DataModel and RF-specific org.ajax4jsf.model.ExtendedDataModel class. All these models are fetching only necessary data, so it is ok to say that they support lazy loading.
Standard JSF data models are operated by component sequentially setting rowIndex (it's an int property specifying index of the row being processed) and requesting row data for this index (refer to JSF spec. or sources for more). So, if you have 10 rows per page; for the first page rows with indexes 0..9 will be processed, for the second page rows with indexes 10..19 will be processed, and so on. That's how switch to the next page is handled.