Is using Windows Forms the only way to produce a user interface within .NET?
Windows Forms represent windows of all types, not just dialogs. They can be MDI frame windows, pop-up windows, tool windows, and so on. They are the only means within the .NET Framework to represent a Windows-based user interface.
Is it possible to create a dialog in MFC and use it from a .NET application?
Yes, it is possible to do so. In fact, in Hour 5, "Understanding Managed Versus Unmanaged Code," there is a lesson on mixing managed (.NET Framework) code with unmanaged (MFC/Win32) code that will help you understand how this is done.