Imagine if you have made an App which manages Jobs, Real-Estate or Employees. Now you would like to allow your content-editor to add this app to various pages and specify additional filters - for example: Show only Jobs with the Category "Full-Time".
Ideally your content-editor can just add the View, go to Edit and specify his Category. Your challenge then is "How do I get this configuration into my Query?" - and this challenge is solved with the In-ValueProvider.
The ModuleDataSource is the standard data source for all modules - and can be replaced. By default it's in charge of giving the View/Template all the content-Items which the editor had added manually through the normal content-editing dialogs.
When you want to work with more data, you may end up replacing this data source with another one from a visual Query, yet there are also many cases where you want both the ModuleDataSource and other data sources as well - so it's helpful to understand what it does.
This is what it looks like in the Visual Query Designer
Note: You should use this for ModuleDataSource, but not for App-Resources or App-Settings
App-Resources and Settings are already provided through normal tokens like [App:Settings:Value] and [App:Resources:Value].