(1) If you have a microcontroller, you don't need an oscilloscope to measure the bounce times. Just poll the data from the tact switch and record it to memory along with millisecond-resolution times, and then after a few seconds of data (depending on memory availability) dump it to serial. In fact, you'll get more useful data from using your project's microcontroller than using an oscilloscope, since the data will match the detection thresholds of the specific microcontroller.
(2) Last night I was working on the software side of a project using cheap Aliexpress tact switches in a scaled-down 3D printed arcade-style button enclosure. Here is what I found. I had no detected bouncing on button depression, but I had quite a bit of bouncing on button release. Debouncing for 20ms was insufficient to remove the release-bounce. Debouncing for 30ms was sufficient. Edit: Interestingly, this morning I retested with the same hardware, and now 30ms was insufficient and I had to increase the debounce time to 50ms.
(3) Speaking for myself, I am annoyed by latency on button depression, but if you debounce correctly in software, on initial button depression there should be no latency introduced. The algorithm I use in my debounce code is basically this. Keep track of the settled state of the button in a variable S. Start with S=0. Poll hardware button. If the hardware button state doesn't match the S variable, immediately update S to match the hardware state and pass this on to the rest of the software as a press or release, but after that ignore all changes in the hardware button state for the delay time. Repeat.
The result is that in ordinary operation, there is no delay when the button is first pressed. (Delay when a button is first pressed always feels bad to me.) The debouncing algorithm introduces the following two artifacts. First, if the button is depressed for less than the debounce time, the software handles it as if it was pressed for all of the debounce time. E.g., with 30ms debounce time, you lose the distinction between a 25ms press and a 30ms press. This is unlikely to matter for most applications except maybe piano. Second, after the button is released, no new button press can be detected for the delay time. So in button-mashing scenarios, you get a bit of latency on subsequent button pressing, and the maximum detectable button mashing frequency is one per two delay cycles.
Looking around the Internet, I see that sometimes people may debounce differently in a way that delays the detection of the initial depression. Don't do that. As soon as the contact is closed, the button has been pressed, even if it bounces up immediately. (This is assuming you don't have noise in your lines. If you do, that's a different issue from bouncing.)
(4) As of 2020, the world button mashing record was apparently 16 in a second, or 62.5ms. If this button mashing was perfectly timed with 31.25ms down and 31.25ms up time, a 30ms debounce time wouldn't affect it at all. However, presumably sometimes the button presses were faster than 62.5ms and sometimes they were slower, so the debounce time would likely affect the world record.
(5) If I was designing hardware for the more extreme scenarios, like piano or Tetris, I would try to get better hardware, and I would also adjust the algorithm to have a different debounce delay on depression and release to match what the hardware was actually doing. (See point 1.)