Despite the fact that I found solution by myself, I'm still open for better one. Feel free to add new answers to this thread, voting will show the better approach. My current solution is below:
I defined the partial to render the whole header layout like this:
<f:section name="Header">
<div id="header" class="some">
<div class="custom">
<div class="wrappers">
<f:cObject typoscriptObjectPath="lib.my_header_links" />
</div>
</div>
<div class="more">
<div class="wrappers">
<f:cObject typoscriptObjectPath="lib.my_main_menu" />
</div>
<div class="one-more">
<f:cObject typoscriptObjectPath="lib.my_header_logo" />
</div>
</div>
</div>
</f:section>
Then I created special template for hidden back-end page:
<f:section name="Configuration">
<flux:flexform id="myPageHeader" label="My Page Header">
<!-- Grid displayed in the page module -->
<flux:flexform.grid>
<flux:flexform.grid.row>
<flux:flexform.grid.column colPos="0" name="Header Links" />
<flux:flexform.grid.column colPos="1" name="Header Logo" />
</flux:flexform.grid.row>
</flux:flexform.grid>
</flux:flexform>
</f:section>
<f:section name="Content">
<f:render partial="Header" section="Header" />
</f:section>
And created a hidden page in the back-end. Which has the template above assigned to it in the appearance settings.
Then in my TypoScript:
lib.my_header_links = CONTENT
lib.my_header_links {
table = tt_content
select.where = colPos = 0
select.languageField = sys_language_uid
select.orderBy = sorting
select.pidInList = #here goes my hidden page id, which feeds the content for header
}
lib.my_header_logo < lib.my_header_links
lib.my_header_logo {
select.where = colPos = 1
}
lib.my_main_menu = HMENU
lib.my_main_menu {
# here goes main menu config
}
And finally I adjusted the page template to render the Header partial. This template is supposed to be assigned to every normal page, which renders site content:
<f:section name="Content">
<f:render partial="Header" section="Header" />
<div id="content">
<v:page.content.render column="0" />
</div>
</f:section>
Now my backend users can customize header content on the header page in the backend and this content is being populated across all pages which uses my page template. The solution is a bit complex, but provides advanced flexibility for back-end users.