What happens when "Request expires" in Electrum? If I understand correctly, wallet is a collection of private keys.

Electrum client, in "Receive" tab has this form to request money.
Every time new "Receiving address" changes, Electrum has to generate new sequence:

private key → public key → bitcoin address




What I'm unsure about, is whether Electrum ever deletes private keys that were generated, consequently making some bitcoin addresses it previously generated no longer controlled by me?
As long as you only work on the GUI, Electrum won't create private keys it doesn't generate again when you restore the wallet. On the console, you can increase the gap limit which can cause Electrum to not generate the private keys you already used to secure funds if you don't also increase the gap limit after restoring your wallet. But this doesn't mean your funds are lost, afterwards, if you keep the seed. For one thing, you can increase the gap limit in your stored wallet, for another thing, your funds will become "unlocked" after you used the restored wallet enough to make Electrum generate the private keys, again.

The "receive money" functionality of Electrum only is a built-in note program. You note for yourself that you're expecting a payment of 30 mBTC from Mark until January 18th. If he didn't pay until then, Electrum will tell you that his payment is overdue and you can get angry at him. However, Electrum has no means of sending Mark an email or something, and therefore doesn't do so. It's just notes for you. Furthermore, these nodes aren't restored when you restore your wallet via your seed as they remain on your computer and aren't sent to a cloud service.

And no, Electrum won't delete the private key corresponding to the public key corresponding to the address you noted as the receiving address, afterwards. That'd be a really bad thing. Just imagine, Mark is 10 minutes late with his payment. Then, the money he sent slightly too late would be lost forever.

You can even find this out for yourself: If you go to the tab "Addresses", you will see your wallet's addresses. The receiving address in the tab "Receive" always is the upper most unused and unmarked address, but the address is already there, before you create the receive note. And so, of course, is its corresponding public key and the private key which corresponds to that.

The only things happening when you tell Electrum that you plan to receive money, is that the note in the receive tab is generated and the address is assigned a label (which you can see in the addresses tab), which is just another local note.

You can of course hand your addresses out to people (in arbitrary order), without telling Electrum that you plan to receive money on them.