I moved from Emacs org-mode to Obsidian with the help of the obsidian-tasks plugin, which lets you write queries for tasks similarly to Dataview. I used a few of those queries to build up an Agenda view that matched my custom agenda buffer in org-mode. I put together a little write up here: https://davi.sh/blog/2022/01/obsidian-one/
I use the Tasks plugin for this. Tasks are created by creating markdown lists. You can put tags in with hashtags and due dates in with (and this bit I dislike, even though there's a command for it) the calendar emoji followed by a date.
You then write a query in a markdown code block with a custom query language.
E.g.
```tasks
not done
description does not include #deferred
due before today
path does not include Templates
```
For recurring tasks, I combine with the periodic notes plugin, I put the tasks in my daily/weekly (I don't use monthly but it is an option) with labels like #wednesday if it needs to done on a specific time. Then I include appropriate queries in my daily notes to bring up the relevant tasks, and I also have a Todo note with various longer term/backloggy tasks.
There are other plugins you can use, like Dataview which is the subject of this post (but means each Todo needs to be its own note), or the Todoist plugin, but Tasks is the one which works for me.
Currently, I'm using Evernote and its new Tasks feature is very good, even though it could be better.
I cannot move from Evernote to Obsidian if I don't solve the issue of managing tasks effectively from with Obsidian, as I currently do with Emacs.