You're right, it's a bug. Apparently frame_to_world only works with one level of frames.
However, development of Classic VPython has halted, so this bug presumably will not be fixed. See
As to your second question, there isn't a Classic VPython for Python 3, because at the time of ending developmernt of Classic VPython there hadn't been a release for Python 3 of the wxPython library used by Classic VPython.
Jupyter VPython (see
vpython.org) works on both Python 2 and Python 3, but although it is very close to the capabilities of Classic VPython, one of the few missing features is frame. It is intended to implement frame and extrusion in both Jupyter VPython and GlowScript VPython (which has a limited extrusion object). There are also a few recent developments in GlowScript VPython that have not yet been brought into Jupyter VPython: 3D text, and widgets -- button, radio button, slider, and menu.