I'm not going to pretend that I fully understand what you are saying.
Here is a screenshot my data that day.
Are you saying that the three low size blocks (0.0%) within this bottlenecking is normal?
yes
Edit: To clarify, I have not noticed those 0 transactions blocks till recently, so it is possible this has existed since the beginning of mining.
It has been going on since Bitcoin began and has always existed. Just look at the first hundred or thousand blocks. They are all empty blocks because Satoshi was both the only person mining and the only person on the Bitcoin network.
We understand that. The question is how can this happen nowadays with more than 100,000 daily transactions and a large bunch of miners all other the planet.
I wonder if this could have been done on purpose, with 2 miners working together, one "idling" his computer when it's about to complete the mining of a block, and only releasing it one second after his friend had mined a block. Do I have a crazy imagination, or is this possible?
Possible, but unlikely. This happens nowadays because of randomness.
Let me explain. Miners are really only hashing the block header. The block header contains several fields, of relevance here are the merkle root and the nonce. The merkle root is the hash of all of the transactions included in the block. If there are no transactions except the coinbase, the merkle root will be the coinbase transaction's hash. The nonce is a 32 bit integer which the miner will iterate through all of its possibilities until the header's hash is below the target hash. Additionally, there is another field in the coinbase called the extranonce which some miners will also use. This is also iterated through to change the merkle root to find the hash that is less than the target. When mining, only these two fields will change in order to have on changing variable. Everything else, including the merkle root and thus the transactions in the block, stays constant while the miner iterates through the nonces and extranonces. If none of the nonces and extranonces produce a hash that is lower than the target, they will rebuild the entire header, a new timestamp, new merkle root by including transactions, and so on. Then the miner repeats the process again.
A miner begins mining on a block after the previous was found when there are no transactions of high enough priority. It will create the header with a merkle root that has only 1 transaction, the coinbase. It then goes through all of the nonces and extranonces to find the hash lower than the target. Sometimes it will find the hash without going through the entire set of nonces and extranonces and thus the merkle root and the transactions in the block will remain at 1 transaction. If it iterates the entire set and doesn't find the hash, which is very very likely, then it rebuilds as I said above and suddenly, there are now transactions included in the next block header it attempts to hash. Most empty blocks are found within a few seconds after the previous block because the miner was lucky enough to not have to change the merkle root to find the block.