Are there performance implications using 'bypass'.
Since it makes sure that no more packets of the flow get analyzed it has obvious performance advantages. See the article "Suricata bypass feature" for some impressing numbers.
Does it work in any rule?
Since it changes the future behavior of a flow it makes sense only in rules which match parts of a flow, i.e. usually TCP and UDP.
For example, would this bypass all tcp traffic? ...
It likely would but it would not be the best option to bypass all TCP traffic. It might be better (faster) to make Suricata ignore this traffic in the first place. See Ignoring Traffic in the documentation.