That depends. api.use makes a dependency available to the package, while api.imply makes a dependency available to packages which depend on the the package that implies the dependency.
So when to use what? I always create a base package which all other packages depend on. It implies a router, collection2, collection-helpers and all other packages which are used in more than one of my packages. If a dependency is just used in one package, api.use it in that package.