Ultimate Tasks can also handle sub-tasks, and even sorts sub-tasks underneath their parent tasks within Projects.
To create sub-tasks, open a task as a page and click the Task with Sub-Tasks template:
Add your sub-tasks to the table created inside the task page:
In your Project, you’ll notice your sub-tasks neatly sorted beneath their parent task:
Note that sub-tasks can be spotted quickly due to the ➞ symbol in their State property.
Sub-tasks are not sorted beneath their parent tasks in Smart Lists such as Today, Tomorrow, etc. In these views, you’ll see them sorted purely by Due Date.
The short answer: Only one.
The long answer: Only your first “level” of sub-tasks are able to show up inside projects. This is due to limitations within Notion’s Rollup property.
Technically, you can create as many sub-task levels as you want, as you can generate an instance of the Task with Sub-Tasks template on any page in the All Tasks database - even if it’s already a sub-task itself.
However, beyond the first level of sub-tasks, you won’t be able to pass the Parent Project property. So deep-level sub-tasks cannot show up in Projects.
In my opinion, a second layer of sub-tasks is almost never needed anyway. If it is, I’d recommend utilizing simple checklists.