GLSLプログラムの最小構成です。
床井先生のページを参考にしています。
http://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20051006

vertファイルとfragファイルは適当にどうぞ。
#include <stdio.h>
#include <gl/glew.h>
#include <gl/glut.h>

int readShaderSource(GLuint shader, const char *file)
{
FILE *fp;
const GLchar *source;
GLsizei length;
int ret;

/* ファイルを開く */
fp = fopen(file, "rb");
if (fp == NULL) {
perror(file);
return -1;
}

/* ファイルの末尾に移動し現在位置(つまりファイルサイズ)を得る */
fseek(fp, 0L, SEEK_END);
length = ftell(fp);

/* ファイルサイズのメモリを確保 */
source = (GLchar *)malloc(length);
if (source == NULL) {
fprintf(stderr, "Could not allocate read buffer.\n");
return -1;
}

/* ファイルを先頭から読み込む */
fseek(fp, 0L, SEEK_SET);
ret = fread((void *)source, 1, length, fp) != (size_t)length;
fclose(fp);

/* シェーダのソースプログラムのシェーダオブジェクトへの読み込み */
if (ret)
fprintf(stderr, "Could not read file: %s.\n", file);
else
glShaderSource(shader, 1, &source, &length);

/* 確保したメモリの開放 */
free((void *)source);

return ret;
}

void init(void)
{
glClearColor(0.0f, 0.0f, 1.0f, 0.0f);

// shaderオブジェクトを作成
GLuint vertShader = glCreateShader(GL_VERTEX_SHADER);
GLuint fragShader = glCreateShader(GL_FRAGMENT_SHADER);

// shaderソースを入力
readShaderSource(vertShader, "basic.vert");
readShaderSource(fragShader, "basic.frag");

// shaderソースをコンパイル
glCompileShader(vertShader);
glCompileShader(fragShader);

// shaderプログラムを作成
GLuint shaderProgram = glCreateProgram();

// shaderプログラムにコンパイルしたshaderをアタッチ
glAttachShader(shaderProgram, vertShader);
glAttachShader(shaderProgram, fragShader);

// shaderプログラムをリンク
glLinkProgram(shaderProgram);

// shaderプログラムの適用
glUseProgram(shaderProgram);
}

void display(void)
{
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1.0f, 0.0f, 0.0f);
glBegin(GL_QUADS);
glVertex2d(-0.9, -0.9);
glVertex2d(0.9, -0.9);
glVertex2d(0.9, 0.9);
glVertex2d(-0.9, 0.9);
glEnd();

glutSwapBuffers();
}

void resize(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
}

int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH);
glutCreateWindow(argv[0]);
glewInit();
glutReshapeFunc(resize);
glutDisplayFunc(display);
init();
glutMainLoop();
return 0;
}

ついでに、Visual StudioでGLSLのシンタックスハイライトを行うには以下のページにある.vsixファイルを実行すればよいです。
https://github.com/samizzo/nshader/releases/download/2.0/NShader.vsix