A frame is part of a frameset, an iframe is an inline frame element.
I think of a frameset as a kind of table layout, each frame being a part of a defined "grid", where iframes can be positioned using CSS
Best? It depends on what you need. I think frames became popular for static pages before backend "includes" became widely used. That is, a page might have header, nav links, footer, and content frames, where the content frame changed so every "page" had the same header, nav links, and footer, without the need to recode them for multiple pages. You could do the same kind of thing with iframes if you wanted to.
You can use frames if you use the frameset doctype, iframes anytime.
I don't know the why behind frameset being deprecated, but iframe is deprecated in favor of using the object tag instead. The problem is that although iframe is deprecated, it's still widely supported, and personally I find the object tag a bit more trouble to work with (though I use neither).