Vertex positions: These are, as the parameter name suggests, the positions of each vertex within the procedural mesh.
They are defined in local space, meaning that the vertex (0, 0, 0) would be exactly at the location of where that actor appears in the world.
A vertex of (10, 10, 0) would be 10 units forward and 10 units to the right from the first vertex (0, 0, 0) and so forward.
The X axis is the forward axis, and the Y axis is the right axis in Unreal.
(10, 0, 0) ------------------------------------- (10, 10, 0)
|----------------------------------------------------------------|
|----------------------------------------------------------------|
|----------------------------------------------------------------|
(0,0,0) ---------------------------------------- (0, 10, 0)
In order to get a mesh to appear, you must define at least a minimum of 3 vertices (i.e. enough to create a single triangle).
The parameter that is mentioned as Triangles (which I personally find to be a bad name as it is somewhat confusing), is what is commonly called as the Index Buffer.
A bit of googling and other resources can explain this better than I can, but basically, it is a more efficient way of specifying the way in which your mesh is to be created.
If you had three vertices, say (0, 0, 0), (100, 0, 0) and (0, 100, 0), in order to draw a triangle with these vertices your index buffer would have to be [0, 2, 1], where each value in the index buffer defines the order in which those vertices in the vertex buffer are joined on the GPU.
Why [0, 2, 1] and not [0, 1, 2] ?
This is because it is a common convention in computer graphics that vertices of a triangle are ordered in counter-clockwise direction.
This also helps later when calculating normals, where a face that is ordered counter-clockwise is considered to have the normals “facing outwards”.
Hope this helps!