Maybe a leaking injector
High CO is typically rich but your lambda says otherwise - I'm unfamiliar with your exact testing (England? - Petrol what is that? :) ) so I don't know what it means.
I typical lambda sensor (oxygen sensor) averages about .5 volts and swings wildly at idle. They way you know its working is the swinging back and forth).
A too rich signal means the Lambda sensor is reading high too often and the computer is having trouble adjusting.
If it were EGR, I would expect all the cylinders to adjust via the lambda reading and you would more or less drive fine.
With one injector leaking, at or near idle you would have one cylinder running a bit rich, and the other adjusted lean to compensate. Under a moderate load (steady on highway) probably less likely to notice.
Another possible clue. Your startup smell. The gasoline drips down the cylinder and one cylinder ignites with extra fuel. You might notice it taking a bit longer to crank/start the car (needs time for fuel pressure to build in the fuel lines).
So...
Shut off the car, measure fuel pressue. If it drops quickly, and with all the other symptoms, probably a bad injector (leaking). Probably the cheapest thing you can do is replace them (only 3 right?)