Грубо говоря, в общих чертах:
Rack это библиотека, которая предоставляет АПИ для работы с ХТТП (в основном всякие обработчики запросов и ответов, вызывальщики другого кода и пр).
Пума -- Вёб-сервер. Пума слушает порты, обрабатывает соединения и тд. Примерно как Нгинкс или Апач.
Но есть особенность -- получив запрос Пума применит к нему Рэк, который вызовет, в свою очередь, указанный рубиновый код, то-есть собстно приложение (обычно на каком-либо каркасе, например рельсе).
Примерно так:
80 порт, Пума --> Rack --> Application