I have found an answer after some searching.
Each GRIB file I was taking had several messages.
Among them was
- 10 metre u/v component of wind
- u/v component of wind
Each message would have 2 10 metre u/v component of wind and 10 u/v component of wind files.
The difference is that 10 metre u/v component of winds are at an altitude of 10 metres above the surface of the ground. The key 'level' returned '10' when I queried it using pygrib APIs.
U/V component of winds had various values when it's 'level' key was queried ranging from '100000' to '2000'. This would probably be in feet since 100000 metres is roughly 60 miles which is too far above the earths surface for weather balloons to go to.
So in this particular case, the difference is in altitude.
I am not sure if the GRIB files I am reading are "standardized" in any sense of the term so perhaps this question and answer is particular to only my set of files.
Thank you for all the interest.