Assuming that each of the subqueries cp, bi and bc is intended to return one row per project/investment id, you should be able to combine the separate sub-queries into a single query - like so:
with cte as
(select i.id,
i.name,
row_number() over (partition by i.id ORDER BY bl.created_date DESC) rn,
o.IF_CST_TOT,
o.if_budget,
if_budget_corrente
from inv_investments i
join prj_baselines b on i.id = b.project_id
join odf_ca_baseline o on b.id = o.id)
select max(name) name,
max(case rn when 1 then IF_CST_TOT end) BI,
max(case if_budget when 1 then IF_CST_TOT end) BC,
max(case if_budget_corrente when 1 then IF_CST_TOT end) CP
from cte
group by id