var list1Distinct =
from l in list1
group l by l.SKUPINA into g
select new CustomClass { SKUPINA = g.Key, CISLO = g.Max(c => c.CISLO) };
var result =
from l2 in list2
from l1 in list1Distinct.Where(l => l.SKUPINA == l2.SKUPINA).DefaultIfEmpty()
let cislo = l1 == null ? l2.CISLO : l1.CISLO + 1
select new CustomClass { SKUPINA = l2.SKUPINA, CISLO = cislo };