I posted this earlier but got hung up between proxy sessions, and my elegant prose was lost to history.
Ehem.. Anyway, it can take awhile, with some non-documented kinks for the site server to get it's codebases from the NS, before it can pass it on to it's clients. That's why I like to have the full infrastucture in place before rolling anything out. This includes the site server, and any packages staged, and replicated, prior to advertising to clients.
The packages status can be viewed by selecting settings - notification server settings - site server settings.
You can select either the NS, or the site server, and then services, package service, and you should be able to see the package status there.
As long as the site was setup with the correct boundries, the clients will automatically be assigned to the proper site. In the same location as the above (site server settings) you can see the clients assigned to the sites. Failover, meaning if the site server goes down, has to be configured separately, with the default being, if the site server goes down the clients will get no tasks\jobs, but will still communicate with the NS for basic and regular inventory events.