Olá.
Na verdade, depende do seu nível. Se você é iniciante, o modo mais fácil é fazer vários Forms, cada um com uma pergunta e um text para digitar a resposta.
No form1, coloque label com pontuação igual a uma memória integer (de preferência em um módulo) para armazenar os pontos do usuário e outro label com o nº da pergunta ("1"). Coloque um label com a pergunta e um text para op usuário digitar a resposta. Coloque um Botão de ok
no evento click do botão (command) coloque uma estrutura de verificação if else, ou select case para verificar se a resposta em text1 está correta. se estiver correta, acrescente pontos como preferir á memória integer, exemplo:
if txtResposta.text = "resposta correta" then
memPontuação = memPontuação + 10
lblPontuação.caption = memPontuação
lblPerguntaAtual.caption = "02"
Else:
EndIF
Form2.show
Se você colocou a memória memPontuação num módulo, basta colocar para que o form2 carregue o valor em seu próprio label de pontuação no evento Load. Se você fez a memória na procedure do form1, coloque no load do form2 assim:
lblPontuação.caption = Form1.lblPontuação.caption
memPontuação = lblPontuação.caption
lblPerguntaAtual.caption = "02"
Unload Form1
Repare que o form 2 deve ser uma réplica do primeiro com os mesmos controles e nomes, mudando só a pergunta. No códiogo acima, somente um dado se refere ao primeiro formulário, para saber qual a pontuação do usuário.
Repita tudo para os próximos forms e faça um form final com a pontuação total do usuário. Se você souber fazer memórias globais em módulos, fica mais interessante pois você pode registrar a quantidade de acertos em uma memória acrescentando dado somente se o usuário acerta. Pode também apresentar na janela final quais perguntas o usuário errou.
OBS: o form1 só pode ser descarregado depois do form2 obter os dados, como foi mostrado acima, pois eles se perdem no unload. Se você fez a memória no módulo, pode descarregar o form1 a qualquer momento que, mesmo assim o form2 poderá receber os dados da memória.
Boa Sorte.