Ok, I got the procedures working, but I get a sigsegv error on the line
Windows.Swapbuffers(pnl2DC);
the message box says the problem is in the procedure
OGLDRV!DrvSwapLayerBuffers;

My code looks like this:

procedure TForm1.Form1Create(Sender: TObject);
begin
...
with PanelHandles do
begin
p1DC := getDC(OpenGLBox1.handle); // Get Device Context
p2DC := getDC(OpenGLBox2.handle);
p1RC := wglCreateContext(p1DC);
p2RC := wglCreateContext(p2DC);
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
with panelHandles do wglMakeCurrent(p2Dc, p2Rc);
glClearColor(0, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);

Background.Render;
Windows.SwapBuffers(panelHandles.p2DC);
//OpenGLBox2.SwapBuffers;

with panelHandles do wglMakeCurrent(p1Dc, p1Rc);
glClearColor(0, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);

...

BAction.Draw;

...

OpenGLBox1.SwapBuffers;
end;

I guess what that means is that I do not properly initialise the second OpenGL box, but if that's the case, how am I supposed to initialise it?
Or is it something else I'm doing wrong?