Include a "dummy" column in each select e.g.
SELECT COUNT(k.Id) AS 'Normal', 0 AS 'Urgent' , P.Descr, P.DthUlt, P.Idpain, E.IP, E.IdPan, K.IdEst, k.Idpain from Kit AS K
INNER JOIN Extends AS E ON E.IdPan = K.IdPain
INNER JOIN Painel AS P ON P.IdPain = k.IdPain and k.IdEst = 1
GROUP BY k.IdPain, P.Descr, P.DthUlt, P.Idpain, E.IP, E.IdPan, K.IdEst
UNION
SELECT 0 AS 'Normal', COUNT(k.Id) AS 'Urgent' , P.Descr, P.DthUlt, P.Idpain, E.IP, E.IdPan, K.IdEst, k.Idpain from Kit AS K
INNER JOIN Extends AS E ON E.IdPan = K.IdPain
INNER JOIN Painel AS P ON P.IdPain = k.IdPain and k.IdEst = 2
GROUP BY k.IdPain, P.Descr, P.DthUlt, P.Idpain, E.IP, E.IdPan, K.IdEst
order by P.Descr
Your next problem is that this will be over 2 rows and not one, but without sample and expected data I'm not going to dig any further. You may need to use a CASE WHEN ...END or a PARTITION statement. Depends on what version of SQL you are using
[EDIT] Here is a brute force method for getting your query onto 1 line per group:
select SUM(normal) as 'Normal', SUM(Urgent) as 'Urgent', Descr, DtUlt, Idpain, IP, IdPan, IdEst
from (
) q
group by Descr, DtUlt, Idpain, IP, IdPan, IdEst
You can probably simplify the original query by using a PARTITION rather than the UNION but the solution I've presented here will work even though it is not elegant