You're talking about the cylinder going through a mesh. But your picture shows a much simpler scenario where you're projecting into simple quad. So the main question is, can you represent your surface with a plane?
If that's the case, then I think you may be able to work with a shadow matrix to achieve this. A shadow matrix is one that typically takes a ground plane and a light position and projects any geometry that you render into the ground plane, from the point of view of the light.
It was normally used in conjunction with a stencil buffer to render planar shadows of objects, but it should also work in your case, since it's going to project your mesh into the plane. I found the following OpenGL implementation here which I have not tested:
void shadowMatrix(GLfloat shadowMat[4][4], GLfloat groundplane[4], GLfloat lightpos[4])
{
GLfloat dot;
/* Find dot product between light position vector and ground plane normal. */
dot = groundplane[X] * lightpos[X] +
groundplane[Y] * lightpos[Y] +
groundplane[Z] * lightpos[Z] +
groundplane[W] * lightpos[W];
shadowMat[0][0] = dot - lightpos[X] * groundplane[X];
shadowMat[1][0] = 0.f - lightpos[X] * groundplane[Y];
shadowMat[2][0] = 0.f - lightpos[X] * groundplane[Z];
shadowMat[3][0] = 0.f - lightpos[X] * groundplane[W];
shadowMat[0][1] = 0.f - lightpos[Y] * groundplane[X];
shadowMat[1][1] = dot - lightpos[Y] * groundplane[Y];
shadowMat[2][1] = 0.f - lightpos[Y] * groundplane[Z];
shadowMat[3][1] = 0.f - lightpos[Y] * groundplane[W];
shadowMat[0][2] = 0.f - lightpos[Z] * groundplane[X];
shadowMat[1][2] = 0.f - lightpos[Z] * groundplane[Y];
shadowMat[2][2] = dot - lightpos[Z] * groundplane[Z];
shadowMat[3][2] = 0.f - lightpos[Z] * groundplane[W];
shadowMat[0][3] = 0.f - lightpos[W] * groundplane[X];
shadowMat[1][3] = 0.f - lightpos[W] * groundplane[Y];
shadowMat[2][3] = 0.f - lightpos[W] * groundplane[Z];
shadowMat[3][3] = dot - lightpos[W] * groundplane[W];
}
Push this matrix before rendering the cylinder, and pop it afterwards. Draw with backface culling enabled. And if you want to limit the projected shape inside the quad's boundaries, look into how to use the stencil buffer.