Video Display Buffer-VGA Port Interfacing
This documentation is abysmally worded.

Video buffer:
An easy way to implement a video buffer is with a dual-port RAM. That way you don't have to worry about fancy timings, etc. and just worry about clocking out pixel data over the video interface.

HS and VS counters:
The HS counter sounds like it is tracking the current pixel horizontal location. When the HS counter gets to the max row length, it would trigger a horizontal sync pulse, wait some given time, then start over counting from zero.

The VS counter then should be incremented for each horizontal sync pulse. This will then keep track of the vertical pixel position. When the VS counter gets to the max screen height, it triggers a vertical sync pulse, waits some given time (flyback time), then starts counting over from zero.

Because you have these two counters keeping track of where the current pixel is, the current pixel RAM address is going to be:

Pixel RAM address = VS * row_length + HS