How do I display highly customized content? What is the correct way to display parts of a highly customized application? For example my website only consists of a friendlist with user name as well as images and a live chat frame. 

Is this the right approach?


Create Theme with 2 regions (friend_list, chat_frame)
Develop custom Blocks for each feature (friend_list Block and chat_frame Block)
Assign Blocks to the regions
Style each Block individually to fit my requirements
Add javascript for each block for chat and asynchronous updating of the friendlist (ajax)


Is it better to place all features in one module? Can one module have multiple blocks?
Looks like this is a job better suited for a JavaScript web app (Angular, React, etc.) than using Drupal to render the UI. You can create a dummy module whose only job is to load the JavaScript for your webapp. Then it's all JS from there.

For the back end, assuming Drupal is also powering the data layer, you can use the REST API features of the Views module to send and retrieve data.

Additionally, I wouldn't use block layout for the layout of the site since it's a global layout. This hampers further customization of the layout of the site. Consider using Panels to create dedicated pages that have their own layout. Imagine block layout, but only for a specific page or set of pages.