I have something set up similar to yours and it show in the outline.
try to experiment with this :
#set outline(indent: 1em)
#outline()
#show heading.where(level: 1) : set heading(numbering: (.., i) => [Exercise #i.])
#show heading.where(level: 2) : set heading(numbering: (.., i) => numbering("a.", i))
= <exercise-1-label>
== <question-1.1-label>
== <question-1.2-label>
== <question-1.3-label>
= <exercise-2-label>
== <question-2.1-label>
== <question-2.2-label>
== <question-2.3-label>
you can share the part of your template that deals with this if you want.
you should also check if there are heading(outlined: false)
this will prevent them from showing.
also, the show heading rule, if you put it in a template, will likely break your outline title (of if the show rule is set before the outline is called), there is a solved question on the forum on how to fix it.