I've been using sf::Shaders with my program without any issue, and as I remember SFML shaders are just GLSL shaders, with easier implementation.
basic VBO example:
::Header::
typedef struct{
float x,y,z
}Vertex;
Vertex * Vertices;
GLuint myVBOID;
Init
Vertices = new Vertex[3]; // Size of 1 triangle
//basic triangle
Vertices[0].x = 0.f;
Vertices[0].y = 0.f;
Vertices[0].z = 0.f;
Vertices[1].x = 1.f;
Vertices[1].y = 0.f;
Vertices[1].z = 0.f;
Vertices[2].x = 1.f;
Vertices[2].y = 1.f;
Vertices[2].z = 0.f;
glGenBuffers(1, &myVBOID);
glBindBuffer(myVBOID);
glBufferData(GL_ARRAY_BUFFER, 3 * 3 * sizeof(float), Vertices, GL_STATIC_DRAW);
delete [] Vertices;
Drawing
glBindBuffer(myVBOID);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, (char *) NULL);
glDrawArrays(GL_TRIANGLES, 0, 3);
glDisableClientState(GL_VERTEX_ARRAY);
Disposing
if (Vertices != NULL)
delete[] Vertices;
glDeleteBuffers(1, &myVBOID);
That's a basic triangle using VBO's