Well, the way I'd go about it would be to create a flat grid. I'd make it fairly dense, so that the ripples would be nice and smooth. Perhaps I'd make the grid 128 x 128 vertices.
I would make sure that the verts all had texture co-ords assigned, such that the UVs ranged from 0,0(top-left) to 1,1(bot-right).
I would take a copy of whatever image is displayed in your window and make this the texture that I assigned to the grid.
At this point, you should have a flat (planar) 128 x 128 vertex grid, that had the client are of your screen-shot applied to it. At this stage, it would render no different on the screen than your screen-shot appears currently.
From there, I would create a couple of variables that would keep track of (a) the time of most recent-mouse-click and (b) the position of most recent mouse-click.
From there, it would be a simply matter of displacing the vertices of the grid in the Y plane (up-down), based on how long since the click was received and the position that it happened at. I'd most likely use a dampened version of the sine function to displace the verts. I'd dampen based on both distance from click position and time since it happened.
Whenever the user clicked the mouse, any previous values for these two variables would be re-assigned the current position and time.
Unfortunately, since we're only maintaining a single pair of variables for the last mouse-click, each time we clicked the mouse any/all current movement would be lost. This could easily be solved by maintaining a list of click-pos/click-time.
I strongly suggest that you take a look at the first tute on this page:
It's a tute that deals with displacing such a texture-mapped grid with a simple sine wave. Just modify the displacement code to account for your time and position of last click.
There's two times I can think of to rely on texture mapping in GL (or any other lib for that matter)
1) Because you can use an image that gives the same appearance with a small number of vertices that you may need to use a much larger number of vertices for without the map.
2) Because a texture map looks much better than a single solid/shaded colour.
Texture mapping when done by the gpu is very fast and (most often) serves as a good way to keep high image quality while maintaining a low vertex count.