Here are some examples of what I am talking about using Voronoi for simplicity:
Given:
That can be colored depending on which cell is randomly chosen: 
I feel like there would be a better name for this concept, but I don't know it.
This code can highlight a random Voronoi cell:
Graphics[ {GraphicsComplex[ MeshCoordinates[vor], {Thick, Blue, MeshCells[vor, 1], MeshCells[vor, 0], Opacity[0.2], White, MeshCells[vor, 2]} ], Black, RandomChoice[MeshPrimitives[vor, 2]] } ] and you can highlight the adjacent cells to it using (did for a different voronoi):
vor=VoronoiMesh[data]; fromLabel[vm_, labels_] := Ordering[Length /@ vm["Faces"]][[labels]] toLabel[vm_, indices_] := ReplaceAll[ indices, Thread[Ordering[Length /@ vm["Faces"]]->Range[Length[vm["Faces"]]]] ] highlightAdjacentFaces[vm_, label_] := HighlightMesh[ vm, Thread[{2, toLabel[vm, vm["FaceFaceConnectivity"][[fromLabel[vm, label]]]]}] ] vm = vor; highlightAdjacentFaces[vm, Length[data]] Which gives:
While a natural thought is to look at the adjacency matrix of the cells, then test each component to see if it shares a vertex or edge with the region before it, this seems like a very procedural approach and it is not very Mathematica-like.
I am not just interested in convex or Voronoi tilings. For example, this lemon tiling is also interesting:
which I highlighted the rasterized version using this code and Paint:
rowLineQuantity=RandomInteger[{2,10}]; oddColQuantity=RandomInteger[{1,10}]; Plot[ Table[ Sin[x+FractionBox["1", "2"] (-1-SuperscriptBox[RowBox[{"(", RowBox[{"-", "1"}], ")"}], "i"])*Pi]-2 i,{i,1,rowLineQuantity}],{x,-Pi/2,FractionBox["1", "2"] (-1+4 *oddColQuantity) \[Pi]}, AspectRatio->Automatic,Axes->False,PlotStyle->Blue] 



MeshConnectivityGraphandGraphDistancemight come in handy. $\endgroup$