Lethn Take your time. I too think TileMap'a api is kinda jumbled. It's hard to design a simple class interface for such a complex object though.
Just to address the specific things you mentioned.
local_to_map() does exactly what the name says. It converts a point in local coordinate system into tile "indices". If the TileMap object has zero transforms its local coordinate space will in fact be the same as the global coordinate space.
Second thing, if you call get_used_cells() from within body_shape_entered handler, you're still calling it on the whole TileMap object. Receiving the reference to that object as an argument doesn't create any special context. It doesn't isolate collided cells only, becuse that's not what get_used_cells() do. No matter where you call it from - you'll always get all of the used cells.