Do the vertices need to be in the [-1,1] range?
No. This is only done to improve readability of the code. As long as the model you're using is a cube, and the vertices are all outside the near clip plane of the projection, everything will be fine.*
Do I need to use
No. The direction of the vertex, which is what you use to do the texture lookup, is just the position of the vertex relative to the origin of the model, which is the model space position of the vertex. So to do the texture lookup you can just pass the model space position straight through the vertex shader without any changes directly into the fragment shader, and use the code
From the OpenGL wiki (emphasis mine):
The texture coordinates for cubemaps are 3D vector directions. These are conceptually directions from the center of the cube to the texel you want to appear. The vectors do not have to be normalized.
So you don't need to use
normalize() either, as OpenGL will automatically use a normalized version of the lookup vector when you use
The vertices of the model don't need to be in the [-1,1] range,
p-c is equal to the model space vertex position, and you don't need to