I expect that this will be executed parallel in different threads.
This was explained in Victor Wilson's answer, so I'll focus on explaining only this:
Also, I don't understand when a task run?
A Task is usually started when it is created (in which case it is called a hot task). Async methods and all built-in .NET APIs return hot tasks. It is possible to create a non-started Task by using the Task constructor (creating a so called cold task), but these tasks are normally started internally by the same library that created them. Exposing a cold task to the external world, end expecting the callers to Start it, is something that I have never seen, and it would be highly surprising (in an unpleasant way) if existed.
This constructor should only be used in advanced scenarios where it is required that the creation and starting of the task is separated.
var tasks = actionItems.Select(t => DoSmthAsync());
This line of code doesn't create any tasks, so no task is started at this point. The Select LINQ method returns a deferred enumerable sequence, not a materialized collection. The actual materialization of the tasks happens when you call the method Task.WhenAll(tasks).
DoSmthAnotherAsync?