Nix will gladly download anything it needs from binary caches, if available. It is also configured to know about official binary cache by default. You can add more binary caches.
If something is not available locally or in the caches, Nix will fall back to building the package. This usually happens if you are overriding something for a package, say you include an extra compilation flag (emacs >:( ), because then the derivation's hash is different, and the binary cache knows no such thing. Or if what you are building is so old that it was removed from the caches to make space for the fresh stuff.
So, yes, pre-built backages are provided and are the default. However, the fallback exists too.
They have pre built packages for x86_64, so with default options you shouldn't have to compile most common packages. Of course if you change a setting which would produce a different output than the cache, it will trigger compilation of that package. You (or your organization) can also add your own "substituters" (nix terminology for binary cache). This helps if you want to automate builds using your own custom compile options and can be deployed to many machines.
I read a blog post where they talked about using nix develop to set up a dev environment and they said it would build all the required tools from source which is why I was confused.