Is it necessary to provide strong name to an assembly before putting it in GAC?
Yes.
See the MSDN docs on it:
In order to install an assembly in the GAC, you must give the assembly a strong (that is, globally unique) name. Actually, it is not a name but a cryptographic hash key, or signature. The strong name ensures correct component versioning, which helps to prevent components that have the same name from conflicting with each other or being incorrectly used by a consuming application.
Yes, it is required to give the assembly a strong name in order to install it in the GAC.
Yes. Part of the reason for doing this is so that you can guarantee that nobody has installed a malicious piece of code that is mimicking a legitimate DLL. Imagine the havoc it somebody replaced System.Data with a piece of malware.