C-h v pop-up-frames tells you this. It should get you much of the way there.
pop-up-frames is a variable defined in window.el.
Its value is t
Original value was nil
Whether `display-buffer' should make a separate frame.
If nil, never make a separate frame.
If the value is graphic-only, make a separate frame
My suggestion would be to specify that *Help* and *info* buffers be special-display buffers.
You can customize option special-display-buffer-names, to specify that these buffers should be shown in their own frames at specific screen locations. You can also use option special-display-regexps, to handle multiple buffers *info*, *info<2>*,...