Unity can be really dumb, especially with 2D. I think newer versions might have better 2D stuff, but it's originally made for 3D, so there are a fair bit of weird things resulting from that. And some things are dumb either way. I had to build a lot of my own framework to do things that make sense to me.
- The scene editor isn't great for level design, no. It doesn't have a thing to automatically snap objects to grid, though you can hold Ctrl to drag things in increments of your a customizable grid size. In general, it's not set up for sticking to integer positions unless you take control of that yourself; there are "world units" that aren't necessarily pixels, and the camera needs to be set up properly too to get square pixels.
- There are "FixedUpdate" and "Update" methods, with the former calling at fixed time intervals (i.e. 60 FPS if you set the time interval to 0.01666~ seconds), but the latter calling at inconsistent intervals, so you have to use the time delta in all calculations to use that one. (I use FixedUpdate almost exclusively, but it means you get slowdown rather than frame skipping.)
- Drawing arbitrary things on screen isn't really in there natively, so I had to make functions that can draw shapes and text all using GUI.DrawTexture (like, a line or solid rectangle can be drawn as a stretched 1-pixel texture). I think what it wants you to do is build most GUI things visually in the editor?? Also, objects' DrawGUI methods can draw on different GUI layers, but the GUI is always above the objects, and can't have post-processing shader effects applied to it (which allow things like sepia tone or the fuzzy effects from Libretta).
- Getting references to resources or object "prefabs" (to create instances from) requires either manually dragging it onto a public variable in the object that needs it (awful, horrible), or putting it in the Resources folder, from which you can arbitrarily load anything (way easier). The latter is a discouraged practice according to the manual, because it uses a search tree, so there's a more-than-linear load time increase at game start the more files there are. It's still what I use anyway.
- There are default physics, but primarily because of the integer position issue, I found it better to disable all of it and build my own. Basically all I use from it is the Collision Box, to define object hitboxes. One feature that is actually useful: you can set "object layers," and restrict collision checks to a layer or set or layers. ...Although I think you could more or less do this in GM too, just less conveniently.
- You normally can't play arbitrary music/sounds?? I think you're "expected" to give every object that could play sounds "audio player" components, one for every sound they could use. I instead made music and sound player objects that have a few of those "audio players" that just swap out the audio clips.
So yeah, there's a lot of garbage to worry about (even if some of it may be a result of expectations from GM), though it's generally been fine once I got past all of it. The few times I've looked at GM Studio, it seemed to have its own fair share of awkwardness, so I dunno which is really better.