Bitcoin did not have a 21 million limit until bugs were found in other coding languages. The way it was SUPPOSED to work is that every millennia 21 million Bitcoins would be generated until absolute zero and then the cycle would repeat forever. The bug was not in Bitcoin but a bug in some coding languages causing faulty wrapping of signed 64-bit integers (not wrapping back to 50 reward per block).
That is false, or at best it is a weirdly psychotic version of the truth.
I had made the same question not long ago, basically as time passes, the difficulty increases, making it harder and requiring more time for each one to be mined. This might even need more than a century to happen. Miners will profit from the transaction fees at that time.
The purpose of the difficulty is to regulate the time between blocks. It does not affect the rate of bitcoin production. The rate of bitcoin production is determined by this simple rule: Initially, each block creates 5,000,000,000 satoshis, but after every 210,000 blocks the amount is halved.