Correct. OpenGL will not be doing anything light or material related for you. You'll want to create your own material and light structures, and pass the properties (position, diffuse, ambient, etc.) to shaders as uniforms.
With regards to vertex attributes (texcoords, position, normals, etc.), these things are sent on a per-vertex basis, so obviously they won't be sent as uniforms. Instead, you'll call them "in" variables in your vertex shader, and you'll have to set them yourself with glVertexAttribPointer.
Your vertex shader will declare some generic attributes like so:
in vec3 in_Position;
in vec3 in_Normal;
in vec2 in_TexCoord;
When you're loading the shaders, you'll want to bind the variables to attribute IDs like so:
glBindAttribLocation(ProgramID, 0, "in_Position")
glBindAttribLocation(ProgramID, 1, "in_Normal")
glBindAttribLocation(ProgramID, 2, "in_TexCoord")
When rendering, you set these attributes with glVertexAttribPointer like so:
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 32, Byte Ptr(0))
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 32, Byte Ptr(12))
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 32, Byte Ptr(24))
glEnableVertexAttribArray(0)
glEnableVertexAttribArray(1)
glEnableVertexAttribArray(2)
(note that the code is BlitzMax, not C++, but the differences are negligible here)
i like orange