The four basic types, apex:pageBlockTable, apex:dataTable, apex:dataList, and apex:repeat are all basically the same thing, but present different renderings.
apex:pageBlockTable represents a table formatted and styled to look like a related list table.
apex:dataTable is an unstyled table suitable for use anywhere outside of a apex:pageBlock (but may be used within one).
apex:dataList renders a ul
or ol
element (unordered or ordered list, respectively), with li
(list item) elements comprising the rows.
apex:repeat allows any arbitrary output based on a template. The four elements require value and var attributes, iterate over a collection of some sort, may generally be nested inside each other, and are limited to 1,000/10,000 rows of output, depending on the apex:page's readOnly attribute.
Edit: As pointed out in the comment, the main difference with apex:pageBlockTable, compared to the other three, is it must appear in a apex:pageBlock or apex:pageBlockSection, while the other types can be rendered anywhere that Visualforce is allowed. There's a very specific limitation about apex:pageBlock not being available in email templates, as well, so you'd naturally have to use one of the other three types of iterators.