I believe there are two systems for data flow from backend to frontend.
Templates. You can pass data to the renderer as a js object and fill the template with it. Use curly brackets to refer to it.
Square brackets will give you a translated string.
For more on templates look here
Websockets. It's not anything unique to NodeBB, so there should be no trouble finding documentation of socket.io
Have an example of a plug-in using them: frontend and backend
Both systems work with widgets, so choose the option you prefer. The templates seem better if the data you want to load isn't supposed to change after the page loaded (there is lazy loading if you want to use it though), while with websockets you will have some delay between page load and data getting from backend to frontend, but you can request it dynamically without any reloads.
Edit: if you just need some more data about an user or something there is also the api - basically you get json data from almost any page you prepend
/api/ to. For example community.nodebb.org/api/user/oplik0