The simple answer is YES. You re-render those dynamic vertices once per 'frame' and it is easy. Making a modeling program will be far from easy however.
You don't have the right notion about shaders and vertices. I think you've misunderstood the examples that you've seen. A shader is the program that draws the fragments that make up the screen. That program has two parts, once that is executed once per vertex, and one that is executed once per fragment.
Look at those examples again and trace the code better. Or put a NSLog or printf by the compile call. You'll see that it only compiles it once. If not you need to look for better teaching exaples.
Compiling a shader is something you can do ONCE at the beginning of an app. You can do more often but I never do. I have several general purpose shaders and I compile each at the start and bind the one I need to use when I need to use it. Binding a shader and compiling it are two different things.
Changing vertices dynamically is easy. I have a flag program that applies physics to a grid of vertices that make up a 'cloth' flag. I update the flag once per cycle and then to draw it I call:
glDrawElements(GL_TRIANGLES, testFlag.m_NumIndices, GL_UNSIGNED_INT, testFlag.m_Indices);
I think you need to do a lot more research on how open gl es 2 works.
If you wanted to write a modeling program you'd have a stack of objects and properties for each one that tell how many vertices and indicies, etc. We call this type of organization a 3d Engine. Then allow users to mod them. But that will be quite the undertaking. Good Luck!