Data Feeds can be thought of as read-only lists (i.e. enumerables) which can represent anything such as the list of users in a session, a list of public joinable sessions, or the list of settings from your dash menu.
Currently you cannot create custom arbitrary data feeds. You can only use the ones which are provided as components.
To make use of them they must be combined with a view component such as Component:SingleFeedView and also a Component:DataFeedItemMapper to instantiate template slots for each data feed item in the data feed.
How a data feed works by updating and sending data, but it needs a component to send the data to. That's where a Component:SingleFeedView is used, which the data feed is inserted into the feed field so the component will recieve data from the feed. Next the Single Feed View needs a Mapper to map incoming data feed items to templates like UI elements or slots that store data. This is what the Component:DataFeedItemMapper is used for, which maps the incoming types (which extend on top of DataFeedItem) to Template components which are used by the Component:SingleFeedView to create the UI like the settings menu or a list of users in a session.
Normally these template slots are UIX but they don't have to be. Each template slot must have a feed interface component which matches the type of the expected data feed item (Component:FeedItemInterface is the most basic but will work for every data feed item) which allows the information from it to be written to fields in the world.
Most data feeds support searching using a search phrase (string). There is also the path which represents the path to view items from if applicable. The grouping keys (I think) can be used to filter items that are grouped using a certain key.