Frames are a group of HTML tags that allow you to load two or more pages on the same screen. They were once very popular because they allowed the webmaster to save his bandwidth by having his visitors download his header or menu only once, and it also allowed him to easily make changes to his menu without having to change every page on his site.
Since that time bandwidth capabilities, both on the client and server side, have increased, and people can use better technologies like SSI (Server-Side-Includes) to keep the maintenance of their page at a minimum. So the benefits of using frames have quickly evaporated. Some people still choose to use them however, either out of preference or as a requirement for their desired layout.
I recommend you do not use frames. There are a few instances where they can be used such as with an application that requires someone to login first or when you have to have a menu that is fifty or one hundred items long. However for the most part they should be avoided.
There used to be serious problems with search engines and frames. Some search engines would not index your site at all, others would only index your front page. Search engine software has become more sophisticated so for the most part this is no longer a concern, but frames still cause other problems. People can have trouble bookmarking a page deep in your site if you use frames, and while you may want to have them only bookmark your front page they most assuredly would rather bookmark exactly what they want to. Additionally frames can cause problems in some less common browsers, such as WebTV or browsers for those with disabilities. All in all using them is a risk, a risk that isn't worth it to take considering that any benefit they deliver is available with other, better, technologies.