But I dont really grasp how signing that message works. As in when i verify that message i needed the public address the signature and the messege... but how does one decrypt it to know the message?
The message does not have to be decrypted because signing a message doesn't encrypt anything. Bitcoin uses ECDSA as a message signing mechanism. The way ECDSA works allows the user to sign a message using their private key and others to use the corresponding public key to validate it. This works the same way as how a signature in a transaction works.
To sign a transaction, the user will utilise their private key to sign a message to produce a string of characters.
When a user validates the message, the script will use the signature and message to calculate the possible public key(s) that could be associated with it. Given the signature and the public key, the script can then validate it with message. If the address given and the message is correct for the given signature and derived public key, the program would confirm it.
If the message corresponds, you can assume that the person signed it with his private key and he has access to it.