Can we reuse Variables across variable groups in Azure DevOps?
My understanding of the variable groups is that you would create this to leverage the same variables across multiple pipelines.  If you needed to update the value, you'd only have to update it on the library instead of updating it on dozens of pipelines.  If you are only going to use the variable group on a single pipeline definition, variables groups appear to be overkill.

If you have concerns about duplicating code and maintaining the exact same deployment steps across your stages, I would recommend you group them into a task group.  That way you can manage versioned updates and will also have it reflected across all pipelines and stages where it is referenced.

I think you would have some name resolution issues if you tried to use the different variable groups that have the same name on a single pipeline.  Instead, you should probably leverage the variable scope on the pipeline.  It will grab the appropriate value staged to the scope you are executing.