Как умело работать с Sidekiq и очередями?
Очереди это, как уже сказал bmalets, что-то вроде списков задач. Они нужны в основном для управлением нагрузкой, параллельностью. По дефолту есть только очередь default. 
Классический пример разделения очередей:
- mailer - очередь для рассылки почтовых сообщения пользователям
- default - для всего остального
Можно сделать так что для очереди mailer вы запускаете 10 процессов (не воркеров, а именно процессов ОС), а для default только 1. Тем самым вы делаете приоритетной очередь mailer.
Распределением нагрузки можно также управлять с помощью "весов" (параметр -q mailer,9 default,1 ). В данном случае из 10 задач 9 будут взяты из очереди mailer и только одна из очереди default.
Под воркерами могут подразумеваться два понятия:
- воркер как процесс ОС который берет задачи из очередей на выполнение
- воркер как класс руби, который выполняет какую-то бизнес-задачу
В основном конечно же под воркерами подразумевается второй вариант.
По вашим вопросам:
- как воркеры исполняются? 
Процесс-обработчик берет задачу из redis и выполняет её. Тут важно понимать, что при аварийном завершении работы процесса вы можете потерять задачу (такие кейсы бывают очень критичными для бизнеса).
- какой обьём памяти для этого нужен?
Объем данных в redis'е можно посмотреть в админском интерфейсе.
- почему redis
Кто знает...
- как это работает с redis
???
- почему в perform_async нельзя передовать сами обьекты? а только id, strings, json ...?
Можно, но не нужно. Все что попадает в perform_async должно попадать в redis. А это накладные расходы на хранение, сериализацию/десериализацию.
- Как правильно вызывать и добавлять очереди.
Что вы имели ввиду под "вызывать очереди"? Очереди добавляются автоматически
Вообще формат хранения можно запросто посмотреть в самом редисе.
Коротко про суть - в общем любой сайт должен возвращать страничку на клиент < 3 секунд. То есть рельсы должны быстро обработать запрос и вернуть ответ. Отправка почты или "работа с инстаграм" - довольно сложные для обработки задания, которые замедлят скорость HTTP-ответа. Если "тяжелую" часть работы отдать на sidekiq, то то этой проблемы не возникнет. 
Sidekiq использует Redis для хранения очередей.  
В папке /app/workers/ размещаешь нужные для тебя воркеры. Например:# app/workers/hard_worker.rb
class HardWorker
  include Sidekiq::Worker

  def perform(name, count)
    puts 'Doing hard work'
  end
end
(метод перформ как точка входа нужен обезательно, название файла и класса должны заканчиваться на 'worker', ну и конечно же include Sidekiq::Worker тоже нужно).
Когда sidekiq запущен, можешь из любой точки в коде проекта вызывать:HardWorker.perform_async('bob', 5)
Что создаст новое "задание" для sidekiq и добавит его в очередь. Собственно, по мере обработки job-ов sidekiq выполнит поставленое ему задание - достанет его из очереди и воркер его выполнит. Больше воркеров - быстрее обработка, количество воркеров можна задать как аргумент при запуске sidekiq.
P.S. Скорее всего ты сделал ошибку в воркере или неправильно делаешь вызов. Добавь свой код к вопросу. 
+ посмотри рейлскаты на эту тему railscasts.com/episodes/366-sidekiq