Creating 100 tasks will not necessarily start 100 concurrent threads that all execute at the same time. You're limited to the number of pool threads available and also to what the TPL things is a reasonable number of tasks to be running concurrently. On a 4-core machine, it's likely you won't get more than three or four concurrent tasks.
That said, you're probably better off starting a single task that then iterates over your list of assets and loads them one at a time. With multiple threads making I/O requests to the same drive, it's likely that those threads will spend a lot of time waiting on the disk and don't do much in the way of concurrent processing. You're getting little to no benefit from having many threads do the loading, because they spend most of their time idle. I wouldn't be surprised to find that your multiple loader threads take longer to complete than if you started a single thread that loads all the assets one at a time.
I don't see how creating 100 individual tasks, each one loading a single asset, can be any easier to code than a single task that loads those 100 assets sequentially. I can't think of how you could create such a data structure.
In short, you don't have to limit your number of tasks to the number of available cores; the TPL will do that for you. But you're probably better off having a single task. At best, you'd be marginally better off with multiple concurrent threads, but it's unlikely.