I would like to understand more how the network, specially a node decides about which transactions will relay and which blocks and how it does achieve that. Is there something more than the wiki I can read?
http://bitcoin.org/bitcoin.pdfMessages are the first thing a client does when connection to the network and after it has the info it needs it starts relaying?
I'm not sure why this detail matters to you. It would be better to ask about what you actually want to know. How will this information be useful?
If you really want to know, you can look at the source code here:
https://github.com/bitcoin/bitcoinIf you aren't able to read the source code, then again I ask, "Why do you want to know?"
Also is it possible for a node not to relay blocks and transactions?
Yes, but why?