It is important to understand that just because a certain type of window was created does not mean that it must always be that type of window. A windows type is determined by its settings, so changing its settings to match a different window type will change that window to a new type.
A Main window is one that is set to start maximized, and has its Border and Titlebar display policies set to 'When Not Maximized' or 'Never.' This will make the window take up all available space (minus space used by any "docked" windows). This makes the window act much like a typical "HMI screen." There can be many main windows in a project, but only one should be open at any time since they would all overlap.
A popup window is a window whose Dock Position is set to Floating and is not maximized. Its Border and Titlebar display policies are typically set to 'When Not Maximized' or 'Always,' so that they can be manipulated by the end-user. These windows are often opened by components in a main window, and are meant to be on top of the screen. To this end, they should have their Layer property set to a number higher than zero so they don't get lost behind the main window. Popups can be set to open at a specific position on the screen using window's Location property. Popup windows can also be parameterized so they can be made once and used for multiple similar applications, dynamically changing the content on the screen based on a parameter that gets passed in.