You can make these individual targets if you want to avoid building the whole repository; the dependency tree should be properly set up for this. The other aspect as well is that the hello world example doesn't use SSL, so you can also reduce the overall list of dependencies by using the unsecure version of grpc instead as to not pull the OpenSSL / BoringSSL dependency.
Unfortunately for protobuf, you can't use protobuf-lite in the plugins, so grpc_cpp_plugin requires the full protobuf dependency. But you should indeed be able to tweak the example to use protobuf-lite instead for its own runtime.
The other important dependencies we have are:
zlib for the stream compression.
c-ares for the DNS resolver.