It basically frees anything that can be freed on the GPU other than things that the GPU may still be using or that the Skia client may still have ownership of. An example of the latter is a texture-backend SkImage. We wouldn't delete the texture because it makes the client-owned image unusable. The big exception to this is we don't free shader programs or pipelines. It's mostly going to be textures (including atlases) and buffers that get freed.
More stuff is likely to be freed if the GPU is caught up with the CPU (which could be enforced by calling flushAndSubmit(true) before calling freeGpuResources()).
You can just keep on using the GrContext afterwards, it just may be slower as new resources are created.