As funções de tag de modelo dependem de variáveis globais para acessar a postagem sendo processada e recuperar dados a partir dela ou relacionados a ela.
A principal variável deles é a $postque contém o próprio objeto post. No seu exemplo, não é explícito, mas o que está acontecendo é que seu loop atribui dados $post, se o nome da iteração não fosse, $postvocê precisaria fazer isso explicitamente ( global $post; $post = $some_other_post;).
No entanto, existem muitas outras globais e o objetivo setup_postdata()é preenchê-las com dados. Se você olhar para a fonte, eles são:
global $id, $authordata, $currentday, $currentmonth, $page, $pages, $multipage, $more, $numpages;
Observe que, na maioria dos casos, você deve ligar wp_reset_postdata()posteriormente para retornar os globais ao seu estado original.