No, not necessarily.
Actually, they can be as far as you want, if they are in the field of view cone. (The only restriction is that the x-coordinate can't be negative)
That's why if you want to keep a good speed, you should check if vertices are not too far before drawing them.
Here is the function that I use in nCraft :
-vertices* is an 1D array with 3D coordinates of used vertices. (example : {5,0,0, 5,1,0, 5,1,1 5,0,1})
-pos* is an 1D array when I will store the 2D coordinates of projections (example : {50,50 100,50 50,100 100,100})
-size is the number of vertices
void computeVertices(float *vertices,int *pos,int size)
{
int i=0;
float temp=0.0;
for(i=0;i<size;i++)
{
if(vertices[i*3+1]>0)
{
temp=OFFSET*vertices[i*3]/vertices[i*3+1]*50.0+160.0; //offset is an arbitrary value. I use 10.
pos[i*2]=(int)temp; //screen coordinates have to be integers
temp=-OFFSET*vertices[i*3+2]/vertices[i*3+1]*50.0+120.0;
pos[i*2+1]=(int)temp;
}
else
{
//if vertices are behind the camera, I store arbitrary values to remember not to draw them
pos[i*2]=-10000;
pos[i*2+1]=-10000;
}
}
}