I can pay by my credit card under fake name: who's responsible to check?

Ultimately, it is the responsibility of the merchant to do whatever they can to verify that the card is not being used fraudulently - because if the transaction is later found to have been made fraudulently, the transaction is reversed by the processor.

There are many things the merchant can do to attempt verify that the card being used is not stolen, such as address verification, cvv code verification, etc. However, name verification is not one of these, as this does not even get sent over the wire when the transaction is submitted to the processor. See https://community.developer.authorize.net/t5/Integration-and-Testing/how-to-validate-name-on-credit-card/m-p/22163 for more info.

mti2935's answer is entirely correct - under most circumstances, the name is simply for the merchant's records, and not sent anywhere or validated in any way. But there are two edge cases I know of where the name may matter.

American Express supports name validation in addition to address and CVV validation. There's examples here and here of what they can return, and AmEx even offers an online web-based tool for merchants to type it in to verify.

The other case is if the merchant is using a third-party fraud check service, such as Accertify (which is run by AmEx). Services like that work by taking as much data as the merchant can give them, and then returning a risk level, which the merchant can use to choose whether to reject the transaction. I'm pretty sure that name is something they can validate, at least under some circumstances.