Is it possible to send messages between users directly without a server in Chrome extensions (P2P)?
Or does it require a server (NodeJS, for example)?
Maybe use Google Cloud Messaging, I do not understand the logic and work (official example extension).
No.
Chrome does not give any tools to do so; any kind of interaction has to go through a 3rd-party server.
GCM, for that matter, is just a routing service between clients and an app server.
Extensions cannot listen for incoming connections. Chrome Apps, however, do. In that case, you can build a P2P application.