Having the derived table in this solution just makes grouping easier in the outer select, it saves us from repeating ourselves too much. The SUM(case...end) structure is one way of pivoting our results, you could look at the pivot operator but I think it is overkill for this scenario. I also added a few other cases even though your supplied data doesn't use them because I figure they are likely. you can always add a where clause if you are looking at specific groups and this is facilitated by the derived table as well.
I have used GETDATE() but you can substitute a date variable for that if it suits better.
declare @t as table 
(
    LicenseNo int, 
    LicenseEndDate datetime, 
    LicenseType varchar(2), 
    Amount numeric(10,2)
)
insert into @t
values
    (1,'1-Apr-2015','AB',100),
    (2,'5-Apr-2015','AB',150),
    (3,'7-Apr-2015','BC',200),
    (4,'10-July-2015','AB',120),
    (5,'10-july-2015','BC',140)
declare @comparison_date as datetime = getdate()
select 
    case ExpGrp
        when 0 then 'Expired'
        when 1 then 'Expires today'
        when 2 then 'Expires in 0-3 months'
        when 3 then 'Expires in 3-6 months'
        when 4 then 'Not due to expire'
        else 'Something went wrong'
    end as Descrip,
    sum(case when LicenseType = 'AB'
            then Amount
            else 0
        end) as AB,
    sum(case when LicenseType = 'BC'
            then Amount
            else 0
        end) as BC
from
    (select *,
        case 
            when LicenseEndDate < @comparison_date
                then 0
            when LicenseEndDate = @comparison_date
                then 1
            when LicenseEndDate > @comparison_date and LicenseEndDate <= dateadd(MONTH,3,@comparison_date)
                then 2
            when LicenseEndDate > dateadd(MONTH,3,@comparison_date) and LicenseEndDate <= dateadd(MONTH,6,@comparison_date)
                then 3
            else 4
        end as ExpGrp
    from @t) t
group by t.ExpGrp