Hi Xin,
WRF uses an Arakawa C staggered grid. Try to imagine each cell as a square (or rectangle if you prefer). The mass grid is the center of the square ('half levels'), which is where fields like temperature and pressure are computed. Some fields like the u-wind use the 'X' grid, which is computed at the left and right side of the grid square. The v-wind is located on the bottom and top of the grid cell (staggered in "Y"). And some fields, like geopotential are computed at the vertical bottom and top of a vertical grid square (staggered in "Z"). Fields that are staggered have a '_stag' in one of their dimension names and also have a value for the 'stagger' attribute when looking at a WRF NetCDF file using ncdump. Staggered fields will have one additional grid point for the staggered dimension. Attached is an image to illustrate the grid types.
If you're using wrf-python, you generally don't have to worry because the 'getvar' routine will unstagger the staggered fields and compute everything on the mass grid (center of grid cell) as long as it's one of the computed variables here:
http://wrf-python.readthedocs.io/en/latest/diagnostics.html . The only exception is 'zstag', which has 'stag' in the title. The staggered variables are 'destaggered' by using simple averaging as part of the diagnostics computation.
Hope this helps,
Bill