It is quite easy to implement multigrid on a rectangular grid but what about an non-rectangular?How to coarse a non-rectangular grid and apply multigrid(assume an easy non-rectangular grid capital letter L)?What about more complicated geometries?
The catch here is that refining a mesh is easy/mechanical, but coarsening really isn't. So think about the problem from the other direction: mesh your problem as coarsely as possible, just enough to capture the (geometrical) features of the domain. This mesh is probably not fine enough to accurately represent the solution, but would be if you refined it globally a few times.
If you keep track of the node/element relationships between these different refinements, then you've got the basic ingredients of multigrid: the mesh that you'd like to solve (the finest one), and a sequence/hierarchy of nested grids back to a very coarse one (with sufficiently few DoF's that it can be solved easily).