I found the problem: on systems with high DPI screens (like for example MacBook Pro 2024) dimensions passed as parameters to glfwCreateWindow() are scaled from "logical size" to "pixel size" on the frame buffer creation.
For example in my case window dimensions are 1280*720, but frame buffer dimensions are 2560*1440.
And MetalLayer->setDrawableSize should be called with correct frame buffer dimensions, not window dimensions. That was the reason of my 2*2 scale and blur.
Also it is necessary to be careful with mouse pointer coordinates returned by the CursorPos callback. Values returned should be scaled to coefficients returned by glfwGetWindowContentScale().