да, они обязательны, так как каждый список представляет собой список элементов (это относится непосредственно к семантическому HTML)
если вам нужны заголовки между списками, вам нужно создать отдельные списки с заголовками между ними, как показано ниже:
<div class="menu">
<h1>menu 1</h1>
<ul>
<li>menu 1.1</li>
<li>menu 1.2</li>
</ul>
<h1>menu 2</h1>
<ul>
<li>menu 2.1</li>
<li>menu 2.2</li>
</ul>
</div>
что приведет к этому:
меню 1
- пункт меню 1.1
- пункт меню 1.2
меню 2
- пункт меню 2.1
- пункт меню 2.2
затем вещь о вложенных списках, вложенный список является частью элемента списка, которому он принадлежит. (слишком часто видел, как это делали неправильно).
<ul>
<li>menuitem 1
<ul>
<li>menuitem 1.1</li>
<li>menuitem 1.2</li>
</ul>
</li>
<li>menuitem 2
<ul>
<li>menuitem 2.1</li>
<li>menuitem 2.2</li>
</ul>
</li>
</ul>
- пункт меню 1
- пункт меню 1.1
- пункт меню 1.2
- пункт меню 2
- пункт меню 2.1
- пункт меню 2.2
лучше всего сравнить его с оглавлением и соответствующими главами книги.