Say, I want to send a transaction that consumes around ~40,000 gas. Could I just set the gas limit of the transaction to 1 million or is there some disadvantage and I should set a more realistic gas limit? In the end I only pay for what was actually consumed, so a too high limit shouldn't matter, right?
If the transaction executes your on-chain function, which you obviously have 100% confidence of for not spending an excessive amount of gas, then the only drawback is that the gas limit that you set may exceed the block gas limit, in which case your transaction will not be executed.
If the transaction executes someone else's on-chain function, whose gas consumption you are possibly unaware of, then another drawback is that it might cost you a lot more then you anticipate.
In short, the gas-limit parameter is designated in order for you to protect yourself when executing someone else's code.
There is yet another drawback in setting the gas limit too high.
As it gets higher, miners become more reluctant to execute the transaction.
I'm not sure about the general mining algorithm, but I believe that it opts for the highest gas price and the lowest gas limit (the reason for the highest gas price is obvious, the reason for the lowest gas limit is that more transactions can be squeezed into the same block).
I learned that out of bitter experience, when I set the gas limit to the maximum (i.e., the block gas limit), and noticed that it took forever for the transaction to execute.