There are a number of articles especially related to working with nixpkgs:
The packages and modules hosted on Nixpkgs are sorted in various channels intended for various use-cases, and in practice are differentiated by the level of testing updates must pass on the official nixos.org hydra instance and the number of updates propagated to the channel.
For Nix users,
nixpkgs-unstable is the bleeding-edge, where packages pass only basic build tests and are upgraded continuously.
For NixOS users,
nixos-unstable is the bleeding-edge, where packages pass build tests and integration tests on a VM, and are tested from the perspective of being an operative system (this means things like the X server, KDE, various servers, and lower level details like installing bootloaders and runnning the nixos installation steps are also tested).
For more information on channels and how to select the appropriate channel for your purposes, see the Nix Channels article.
Due to the fact that nixpkgs is only a nix expression it is possible to extend or replace the logic with your own sources. In fact, there are a number of extensions as well as complete replacements for Nixpkgs, see the Alternative Package Sets article.