No, it means the person who tests functionality is not the same who created it.
Two people thinking together leads to confirmation bias, resulting in two people thinking along the same lines and making same mistakes.
Code reviews, while costing much less, provide much more.
The code reviewer has a different perspective on the code. For example for someone who had not seen the code before it becomes immediately obvious if the code is clearly written or not — if a code reviewer has to ask a question about what happens in the code, the code needs an improvement.
When someone codes knowing that their work will be seen and commented, one puts an effort to make the code good. This is not what happens when two people write it — it is much easier to agree on shortcut when you both feeling like going home.
In my personal experience those developers who say they like pair programming turn out not to be especially good. They might know how to present themselves, but there is a reason why they need to pair.
As for what we miss when we don’t have professional testers — a chance of a non-programmer to try to break your work and find out what is wrong with it.
These days more and more companies decide that they testers’ job is to write automated tests. The problem with it is that they simply end up with some below-average developers doing what any developer can do without them.
