A transaction is made
So far so good.
The transaction gets sent across the miners network
The miners don't have their own network. It's the same network that everyone else uses.
The transaction sender sends the transaction to the nodes he is connected to. Those nodes validate the transaction. If it is invalid, they ignore it and it doesn't get any farther. If it is valid, then they add it to their own mempool, and then relay it to the nodes that they are connected to. Those then validate the transaction. If it is invalid, they ignore it and it doesn't get any farther. If it is valid, then they add it to their own mempool, and then relay it to the nodes that they are connected to. And so on. Eventually, some of the connected nodes that hear about the transaction are solo-miners or mining pools. They also validate the transaction. If it is invalid, they ignore it and it doesn't get any farther. If it is valid, then they add it to their own mempool, and then relay it to the nodes that they are connected to.
The miners validate that transaction and it gets added to the transactions pool
Not just the miners. Everyone that is running a full node validates the transaction and adds it to their own mempool if it is valid before they relay it to anyone else.
From there some miner will pick up that tx and add to his block
Solo-miners and mining pools select unconfirmed transactions from their own mempool.
The protocol allows the solo-miner or mining pool to use any criteria they like to add transactions to their blocks. They can choose to include the transaction, or they can choose to ignore it if they want. Since most miners and mining pools are profit motivated, they will continue to add transactions to the blocks that they are working on so long as there is EITHER still room in the block for more transactions, OR they find a new transaction that pays a higher fee per weight unit than the lowest fee transaction currently in their block (in which case they will remove that low fee transaction to make room for the higher fee transaction.
Once the miners block is filled he will start calculating the value for nonce required to validate that block
The miners are pretty much ALWAYS calculating the value for the nonce required. If they finish a block, or hear about a finished block, then they immediately start working on the next block. They may add transactions, remove transactions, change the timestamp, or modify the extranonce as needed while they are at it, but they never stop working to wait for transactions.
Once nonce is achieved, the block gets added to the blockchain
They will immediately add it to their own blockchain, and they will relay it to the nodes that they are connected to. Each of those nodes will validate the block, and if it is invalid they will ignore it and it won't get any farther. If it is valid, then they will add it to their own blockchain and will relay it the nodes that they are connected to. Each of those nodes will validate the block, and if it is invalid they will ignore it and it won't get any farther. If it is valid, then they will add it to their own blockchain and will relay it the nodes that they are connected to. And do on.
In the meantime, if someone else managed to publish a new block then this block is cancelled and the miner then again picks up new transactions from the tx pool.
Whenever a miner receives a block from a peer that they are connected to, they check to make sure it is valid. If it is valid, then they add it to their own blockchain, relay it to all the nodes they are connected to, and start a new block that uses the block they just received as the "previous block hash".
Transaction validation doesn't happen until the miner tries to build a block.
That is not true. A miner (or any other node) will NOT add an invalid transaction to their own mempool, nor will they relay it to anyone else. Transaction validation happens as soon as the transaction is received. The miner does NOT wait until he is ready to use the transaction in the block before he validates it.
Every individual miner is responsible for validating the transaction that they include in their block, right?
Every full node is responsible for validating EVERY transaction AND EVERY block. A node will not accept into their own mempool or relay an invalid transaction. A node will not accept into their own blockchain or relay an invalid block.
Because of this fact, it would be VERY foolish for a solo-miner or mining pool to include a transaction into their own block without having validated it. If they do, they risk wasting a lot of time, money, and resources creating an invalid block that will be rejected by the entire network.
How do they do that? How do they make sure that a tx is valid?
They check that each of the inputs exists and is not yet spent.
They check that all of the scripts process properly.
They check that the sum of the outputs does not exceed the sum of the inputs.
They check that the formatting is all correct.
They check the locktimes.
Invalid transactions in the mempool will be rejected and won't be relayed further.
Invalid transactions will not even make it into a node's mempool in the first place. They are rejected before they get that far.