второе совершенно неправильно. Осложняет задачу при добавлении новых полей в конфу, делает конфигурации разных копий системы (разных версий), несовместимыми, да и просто выглядет некрасиво.
Правильно, первое.
А хочеться хранить несколько конфигов - кто мешает?
create table config(id int primary key auto_increment, cid int, param char(20),value char(40), index(cid), index(param));
insert into config values(1, "admin_email","admin@domain.com");
insert into config values(1, "site_head","<h1>Hello!</h1>");
insert into config values(2, "admin_email","admin@domain2.com");
insert into config values(2, "site_head","<h1>Hello2!</h1>");
cid и парам надо тоже загнать индексы.. примари кей не подойдет, так как тут возможно дублирование полей.
для примари кей я бы сделал отдельное поле - ИД.