For your first question, running fx serve will start a package server and serve the repository in $FUCHSIA/out/<build-dir>/amber-files/repository. There's some additional documentation about this at
https://fuchsia.dev/fuchsia-src/concepts/packages/package_update. The repository served is a TUF (
https://theupdateframework.io/) repository. If you wanted to serve your own repository outside the build tree, you'd create a TUF repo with your packages and register it with the target using pkgctl. I'm not sure if this is documented (but this is what the tools do).