The surrounding is definitely polygon-based. You can tell by the way the perspective of the buildings changes when the player walks through the town. The polygon-count seems to be really low, but it works because the whole look of the game is quite retro. The fixed view-angle also allows them to put most of the geometric detail into the textures, because they only need to look good when viewed from a single direction.
The characters seem to be billboards (polygons which always face the viewer) inserted into the 3d scene. This, too, only works well because the perspective doesn't change much. When the surrounding would be able to rotate fluently but the sprites in it could not, they would immediately start to stand out.
The video quality is too bad to tell how the sprites filter when they zoom. But one way to prevent sprites from blurring too much on zooming in is to use nearest-neighbor interpolation which causes a "pixely" retro-look on close-ups. To prevent them from losing detail when zooming out is to draw them in a much lower resolution than they appear on the screen. This makes sure no pixel gets "swallowed" when zooming out.
To answer your question about how to do this in a HTML5 game: I would recommend you to take a look at WebGL. When 3d programming math (like matrix multiplication) is too complex for you to grasp, there are also various libraries and frameworks like Three.js available to make using WebGL easier.