Можно ли создать два AsyncTask'a в одном классе?
Вы, конечно, можете добавить сколько угодно AsyncTask'ов в классе, но для загрузки изображений я бы порекомендовал использовать специализированную библиотеку типа Picasso, Glide, UniversalImageLoader или аналогичную.
Какие преимущества вы получаете?
1. Асинхронная загрузка изображений без головной боли
2. Опциональное кеширование изображений - в том числе в RAM и на sdcard
3. Масштабирование и преобразование изображений в thumbnails 
4. Еще много всяких приятных мелочей - см. настройки и опции библиотек
Кстати, гугловцы для своих проектов использую Glide, очень много разработчиков используют Picasso - так что в поддержке недостатка не будет.
Можно. Начиная с версии 1.6 по умолчанию таски выполнялись в пуле потоков, что позволяло запускать несколько тасков параллельно. А вот начиная с версии 3.0 это поведение по умолчанию убрали, чтобы исключить ошибки с параллельным выполнением кода. Если действительно требуется выполнять несколько тасков одновременно, то используем метод executeOnExecutor. Но держим в уме, что при повороте устройства AsyncTask будет пересоздан.if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ) {
    new MyTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} else {
    new MyTask().execute();
}
Не рекомендую использовать IntentService для данной задачи, т.к. IntentService помещает все запросы в очередь и выполняет их по-одному, пока очередь не опустеет.
Посмотрите в сторону Bound Service.