What is the most efficient way to draw this using modern OpenGL? Can I do this with a vertex shader? How should I store the path segments?
The easiest way is probably to use the NV_path_rendering extension: https://developer.nvidia.com/nv-path-rendering
If that won't work for you, you're going to essentially have to implement at least part of the functionality. The good news is that NV_path_rendering shows that it's possible; the bad news is that it's probably going to be a lot of effort, depending on your requirements.