first thing you should get clear yourself with on your path to understand shaders is to (first) know what they ask from application to render right. And this is far from trivial, it is actualy thing that will get you knowing them very advanced.
So, the data for the pepilne of vertex/pixel shader is:
1-) uniform variables - it is data that stays constant during entire shader, wheather pixel or vertex (matrix that transforms constant verticies in stream during the draw and so on)
2-) attribute stream - this is volatile input to vertex shader , the actual verticies with attributes (position, texture coordinate..), it is a different data for every vertex function execution (unlike uniforms) , you should learn how to provide them. Do not confuse with the fact the stream is constant in GPU memory , provided once by CPU (preferably)
3-) varying variable - this is not computed by CPU (you) but by the vertex shader and it travels to pixel shader. Pixel shader computes the pixels on the triangle by the help of interpolating those vertex shader outputs. (do not think that result of vertex shader stays constant for pixel triangle, it varies acros its surface upon barycentric interpolation of fragment position in triangle).
4-) result of pixel shader is written to target, the 4 component vector (color usualy).
To summarize, vertex shader needs uniforms and stream, and pixel shader needs uniforms and varying input from vertex shader.
Since, this is quite restrictive model of pipeline, it is very native to GPUs. But this does not describe exactly geometry/vertex/pixel shader approach of newer dx and opengl libraries they brought offering.