An assembly in .NET is a collection of types and resources that form a logical unit. Assemblies can contain metadata about types using attributes. Attributes provide additional information that can be attached to classes, methods, and other members. There are built-in attributes in .NET and custom attributes can be created by deriving from the Attribute base class. Built-in attributes like Required and StringLength are used to validate model data in ASP.NET MVC. A custom MyLicenseAttribute was created to require a license key by applying the attribute to assemblies. Attributes help add metadata and customize behavior.