We define a user action to implement some logic. In the same way we could define queries to implement some logic, for example "GetArticlesNotPublished". Then we could reuse those queries in web flows like we use user actions.
In the right side toolbox, in the Logic section, we would have in the tree a node "Queries".
This is somehow similar to the element "refresh query", that we can use to refresh a query in a screen action, but in a more overall approach.
Yes, we could define a user action which wraps a query and returns a record list, but in this way I think we lose the optimizations made by the platform.