when I render one mesh that has two quads that cover the screen completely on top of each other with no depth test and no blending
does the pixel shader runs two times for the same pixel?
Yes. If there is no depth test the GPU has no way of knowing if a pixel inside the quad was already rendered "closer" than the one it is about to shade, so it just goes ahead and draws both quads since it doesn't know. It can't reason in high-level terms such as "these two quads obviously cover each other so I'll just render the topmost one". In other words, "no depth test" is equivalent to "always pass the depth comparison" == "always pass the fragment/pixel to the fragment/pixel shader" (actually if you do that you might need to clear the depth buffer first, I think there are some rules to follow)
I have seen that when my GPU is runing a scene that is very complex and the fps are let's say 5, and then suddenly I change the scene to one that is very simple (so it will run it let's say at 200 fps), it will take a little time for the fps to go up again, why?, the change of fps should be instantaneous.
It is. But your FPS counter can't detect instantaneous changes in framerate since it is ultimately taking an average (over a short period, admittedly, but it still needs time to "catch up" with the new framerate). Many advanced counters are built on the assumption that framerate does not change that drastically over a short period of time.