We need to understand first what is a NFT: It is a token that only exist ONCE. Can't be two tokens the same.
What we mean with two tokens the same? To understand that we need to know how a token is defined in Cardano.
It is defined by a Currency Symbol and a token name. Both together makes a token. To have two tokens the same we need to have same Currency Symbol AND same TokenName.
Following that we can see that we can have NFTs using the same Currency Symbol but different TokenNames.
What is a Currency Symbol? It is just the hash of the Minting Policy used to mint them.
How we assure that a Currency Symbol is unique? Using an UTXO to create a parameterized Minting Policy. The UTXO, that for his nature is unique, becomes hard coded in the Minting Policy, so when you get the hash of that parametrized Minting Policy, the Currency Symbol, is going to be related with that UTXO and is going to be unique. Same Minting Policy with different UTXO parameter will end up with a different hash and a different Currency Symbol.
UTxOs are unique, they exists only once in the blockchain and when they are consumed they disappear. Never will exist another UTxO equal to one that existed before.
So, you need a particular UTXO to have a particular Minting Policy.
You can create a Minting Policy that is going to run only once, if you check if that particular UTXO is used in the transaction.
Then you need to add extra validation to be sure that in this only time that is running it will mint only ONE token. If you let mint two or more tokens, they will not be NFTs anymore (if they share same TokenName)
But if you check in the Minting Policy that they are using different TokenNames, you also can mint several NFTs (1 unit of each of them) in the same transaction using the same UTXO.
You could potentially mint all 10.000 in the same transaction, with 10.000 different TokenNames, but you will end up with too many different assets in one or several outputs UTxOs and that could lead to some problems of transaction size. So your limit here wil be transaction size.
I never tried the limits here. Ill recommend you to use referencial scripts for the Minting Policy so you dont have to add the size of the script in this transaction and you have all the 16Kb to use in your big outtput with many NFTs.