Handling multiple resolutions seems easy in 3D because the camera does all the work, but in 2D it gets more complicated. So in my 2D games I recently started using the 3D-style approach of setting the camera zoom based on the difference between the default vertical size of the viewport, and the default size. The code looks like this:
var zoom = defaultSize/get_viewport_rect().size.y
camera.set_zoom(Vector2(zoom,zoom))
and I do this by connecting the "size_changed" signal to a function, so it adjusts the camera zoom whenever the viewport size changes. Although I don't think this is ideal for HUD and other things like text that appear on the screen, and maybe even menus. So I'm still figuring out how to handle that. But if you want to see it in action, I used it in my LD35 entry.