At the object level, reflection is a method of analyzing managed code structure defined in a object's type. Reflection provides access to information about everything that makes up an object; from its fields, properties, and methods, to all of its declaration and design information. Reflection is a powerful tool for working with raw object instances, as it allows one to access object members by name and modify their values or execute member methods.
Reflection actually begins at the assembly, so everything about a compiled assembly (executable or dll file) can be learned through reflection. But in most cases within Unity, you will be interested in the Reflection of a particular object.