Actually, I'm lying a bit, here. Everyone peers with everyone else and may the fastest box win. The actual news articles are stored in the UNIX file system, and each newsgroup has a directory. Each system has a history database which keeps track of the news articles that have already been seen by the news system. This means that you can waste tons and tons of bandwidth and CPU time getting binaries articles that you're never going to store.
Any host wanting to talk to the innd and transfer news has to be listed in the hosts.nntp file.
If that host is listed in the nnrp.access file, the nnrpd will talk to it and let it read news - otherwise it'll deny it access. The active file is maintained by the innd process. As news is posted and transferred in, the innd process updates its in-memory idea of the maximum article number for each group. The script news.daily, usually run by the cron daemon, takes care of this. Basically, news.daily's job is to run expire and then re-update the databases.