When transactions are received, nodes will hold those transactions in memory (the
mempool) whilst mining software attempts to mine a new block. A miner will try to fit as many transactions into a block as they can, so as to earn more fees if they successfully mine a block.
If there are more transactions than will fit in the block, the miner must filter them so as to include enough while keeping under the block size limit. The filtering method typically used is to order transactions by fees paid, and include the highest fee transactions, because this results it the biggest payout if they are successful at mining the block.
Any transactions which were left in the mempool will then be candidates for adding to the next block in the chain, but will be placed under the same filter whilst additional transactions are coming in from the network also. This means that a transaction only paying low fees may be in the mempool for a long time because they are deprioritized over transactions which are paying more.
This creates a fee market for block space. People who require their transactions to be processed in a timely manner - the next few blocks, will pay a higher transaction fee which will promote them to the top of the queue, whereas people who have no urgency for their transactions to be processed will pay a lower fee and be willing to wait until the size of the mempool is reduced.
As transaction volume increases due to more demand, people must either pay more fees, or utilize new technologies to reduce the size requirements of their transactions in order to pay less in fees. Some techniques for achieving this are batching transactions, using payment channels (like the Lightning Network), using sidechains, and using future improvements to the bitcoin itself, which will allow for signature aggregation, and removal of unevaluated branches of bitcoin script.
As I understand it the network rejects blocks over 1MB, and block hash difficulty is set after each block is created as to keep the block time close to 10min.
The difficulty is adjusted every 2016 blocks (approx 2 weeks), by taking into account the blocks created over that period. Blocks are not necessarily every 10 minutes, because it is a random process of finding a valid hash which is under the target value, and can range from seconds to an hour or more. It averages to approximatetly 10 minutes over extended periods of time due to the regular difficulty adjustment.