I've played around a bit with the modeler, and it seems that any client action (e.g. Show Form) will give this warning. System actions (e.g. Change List, Change Object) do not give this warning.
This behavior seems logical: a data source should supply data and not perform any (noticable) actions. A blocking pop-up when the list is empty might be a good use case why you would want a client action in your data source microflow. This is probably the reason it gives a warning instead of an error.
As an alternative to a blocking pop-up, you could check out the Empty Grid Label widget in the appstore.
The warning is generated because the result of the microflow is used as a datasource for a widget. Where the widget will/should handle any refresh/warning actions. Thus if you perform any actions that could influence the representatation it could give unexepcted results. Some examples are showing a form or warning message in a datasource microflow or doing a refresh in your datasource microflow.