OK, I fiddled with it for like two hours and I found the culprit!
I restored backup of my "bad config" and it was lagging and doing 30 frames per second - as expected.
Then I started deleting lines half of the file at a time and after a lot of problems with auto-generated cfg in NES folder, I found that removing this line stops the stuttering:
video_vsync = "false"
To double-check it, I restored the original "retroarch.cfg.rp-dist" and added this line - it's 100% reproducible on my system. Put it on "false" and it's choppy, put it on "true" or remove it and it's not choppy.
Without this line, it is:
-> not choppy with vsync ON and any setting Max Swapchain images
-> not choppy with vsync OFF and Max Swapchain images 3 (default is 3).
-> choppy with vsync OFF and Max Swapchain images 1 or 2
If I put this line in, it's choppy whether the vsync is OFF or ON
-> It's choppy with vsync OFF and any setting Max Swapchain images
-> it's choppy with vsync ON and Max Swapchain 3 (default is 3)
-> it's NOT choppy with vsync ON and Max Swapchain images 1 or 2.
I guess something happens when retroarch.cfg has 'video_vsync = "false" ' line and Max Swapchain images is set to 3, behaviour is the same with Max Swapchain 1 and 2.
Also - why would vsync OFF make it choppy? It should make it less choppy with some potential screen tearing - it makes no sense!