Interfaces allow for separation of concerns and evolution of a system over time without disrupting existing structures. They specify a service that a class or component provides without implementing any structure or behavior. Common modeling techniques for interfaces include identifying seams between components, modeling static and dynamic types, using packages to group logically related elements, and creating architectural views to visualize different aspects of a system.