Веб сервер запускает CGI программу и передает в нее переменные окружения с данными, которые в HTTP запросе передавал клиент.
В зависимости от того, на чем написан CGI это можно извлекать.
Клиенту отправляется инфа просто - CGI скрипт ее просто пишет в stdout, веб сервер отправляет клиенту.
Например для скриптов на perl, данные от клиента доступны через $ENV{'VAR_NAME'}, где VAR_NAME имя определенной переменной. Список можно глянуть
www.oreilly.com/openbook/cgi/ch02_02.html
Вывод скрипта должен начинаться с content-type, если вы выводите html-контент, то например
print "Content-type: text/html\n\n";
Затем обычный html.