My general recommendation is to put the same instance sizes behind an ELB.
According to AWS documentation ELB uses the least outstanding requests algorithm, so it will try to send requests to the least loaded server. However, in 2013 an AWS staff member said that ELB uses Round Robin. That would mean you want to use instances the same size. Given the documentation is more precise, I'd be inclined to go with what the documentation says, but here's what they say.
Davin @ AWS (from their forums)
You are correct, the ELB uses the round robin algorithm at the
availability zone level. This means that if your ELB is multi-az the
incoming requests will be distributed between the availability zones
and then distributed across the instances within each AZ.
For this reason we recommend distributing your traffic across the same
number of instances within each AZ to ensure even processing of the
requests. We also recommend using instances of the same size to enable
consistent behaviour for monitoring and management.
If you do mix instance sizes then you may find your smaller instances
lack resources during peak loading whereas your larger instances may
be under-utilized and wasting resources.
A scenario: the servers initially get 5 jobs each. The faster server finishes two jobs but the slower server only finishes one. So the next two jobs go to the faster server. By now the slower server has finished its work, so it will likely get the next request.
All in all, I suspect it'll be ok - the slower server will be given less work to do, at least if you have a fairly standard use case.
The operating system on the server is irrelevant, so long as they both service requests. They don't even have to service the requests in the same way, but it'd be best if they did.
I'd also avoid put t2 instances behind the ELB unless you fully understand both T2 instances and your application's load behaviour. If you instance runs out of CPU credits ELB should send less traffic to it, so long as it really does do least connections. However if the traffic is served quickly, and there's a lot of traffic, the routing algorithm might not distribute traffic effectively.