Combine two queries from 1 table, 1 to Many
Here is what you asked for, but I think you would want to further aggregate this result set by GROUP BY customer_id to roll up the joined table. If that is the case, then simply add GROUP BY o.customer_id.

SELECT
  o.increment_id, 
  o.customer_id, 
  b.LastOrderMonth,
  ROUND(o.base_grand_total * o.base_to_global_rate,2) as revGBP,
  DATE_FORMAT(o.created_at, '01/%m/%Y') as 'MonthofOrder',
  b.monthCustCreated,
  b.CountOfOrders
FROM 
  sales_flat_order as o
LEFT JOIN 
(
    SELECT  
      customer_id,
      date_format(MAX(created_at), '01-%m-%Y') as 'LastOrderMonth',
      sum(round((base_grand_total * base_to_global_rate),2)) as 'Rev GBP',
      date_format(MIN(created_at), '01-%m-%Y')  as 'monthCustCreated',
      COUNT(increment_id) as 'CountOfOrders'
    FROM    
      sales_flat_order
    WHERE
      status in ('complete', 'processing')
    AND
      customer_ID IS NOT NULL
    GROUP BY 
      customer_ID
) b ON o.customer_id = b.customer_id
WHERE  
  o.status in ('complete', 'processing')
AND
  o.customer_email IS NOT NULL;