Bottle necking occurs when the overall speed of the game (the frame rate) is dependent on the individual performance of several different components. Each frame requires a certain amount of work from each component, if component "A" finishes that work first and the whole system has to wait for component "B" to finish its job, before the entire frame can be drawn, then you would say that component "B" is a bottleneck to component "A".
If you're struggling to imagine this, think of it a bit like a factory assembly line where each stage of the assembly line has its own speed. For example a toy is produced by a machine at 10 toys a minute, and then a packer machine packs them at 8 toys a minute, and finally they're loaded onto trucks to ship out at 12 toys a minute.
The entire assembly line from start to finish can only run at the speed of the slowest stage, which in this case is the packing stage at 8 toys a minute, the other stages can go faster but it's just a waste to do so. In this scenario you'd say that the packing stage is a bottleneck for the rest of the assembly line.
In the real world with video games it's more complicated, different games make different demands from different components and so what component is the bottleneck in a system changes depending on the game and the settings you pick and also what components you use.
Normally when you want to increase your frame rate in games, you need to identify where the bottleneck is and then improve that component, typically this is either the CPU or the GPU, but can also be other things.