If I want to build a shared assembly, does that require the overhead of signing and managing key pairs? If so, is there a best practice approach to doing so?
Yes, storing an assembly in the GAC requires them to be strong named. Which is not the same thing as signing with a certificate. It is very simple to assign a strong name: Project + Properties, Signing, check "Sign the assembly", key file = New. The resulting .snk file should be checked-in to your SCCS so it is always signed from the same key container.