When to use "retain rows"?

Retain rows just means that when the component first starts up, it will be populated with the dataset that was saved into it in the designer.
Even with polling off, any bindings on your screen will run when the window first opens - the biggest difference ‘Retain Rows’ usually has is that it can dramatically improve save times in the designer, since we don’t have to serialize potentially massive datasets and store them to the internal DB.