In most cases users can just use the default buildpack builder which uses detection of runtime based on the repo contents and builds an image. For more complex compositions (e.g. a PHP web tool with a Python worker) users will probably create a project.toml file with a list of buildpacks with their versions to use.
Right now we're only distributing the buildpacks through the builder image, so I'm not exactly sure how it's going to find old buildpacks. Do we need to publish them as artifacts somewhere? Or use git tags? Or ...
Also it would be good to verify that these versions are semver compatible and not fixed.