How to determine intended use of nix flakes outputs

The overlay(s) are mostly a convention right now that are supposed to contain either a single or a list of overlays. They are useful when a flake wants to extend nixpkgs with their own overrides.

Then on the consumer side you would do something like this:

{
  description = "Flake utils demo";

  inputs.flake-utils.url = "github:numtide/flake-utils";
  # assuming that this flake exports an overlay attribute
  inputs.someflake.url = "foo.com/bar";

  outputs = { self, nixpkgs, flake-utils, someflake }:
    flake-utils.lib.eachDefaultSystem (system:
      let
        pkgs = import nixpkgs {
          overlays = [ someflake.overlay ];
        };
      in
      # and here is the core of the consumer flake
      {
        defaultPackage = pkgs.hello;
      }
    );
}