HTML frames allow a webpage to be divided into multiple separate windows called frames. Frames are created using the <frameset> tag, which replaces the <body> tag. The <frameset> tag uses attributes like cols and rows to specify the number and size of vertical or horizontal frames. Individual frames are defined using the <frame> tag within the <frameset>, and can specify attributes like name and src. Links between frames are set using the target attribute to specify which frame the linked content should open in.