A w zasadzie można prościej. FF daje możliwość startu z określoną ścieżką do profilu (firefox -- profile <path>). Stwórz sobie zatem tyle ich ile potrzebujesz i startuj FF korzystając z ww. komendy.
W przypadku wielu wersji FF będziesz miał jednak inny problem, albowiem jeśli będą to wersje rozprowadzane z repozytorium, to każda instaluje się "w miejsce" poprzedniej. Te "inne" wersje, oprócz z repo, musisz mieć np. z appimage, czy nawet binarkę ze strony FF. Inaczej musiałbyś kompilować ze źródeł i zmienić np. docelowe miejsce plików skompilowanego FF na /opt/ff_wersja, a także - ewentualnie - dodać jakieś dowiązania symboliczne o unikatowych nazwach do każdej wersji FF. A kompilowanie FF trwa

EDIT:
Może jeszcze jaśniej.
Problem polega na tym, jak to FF jest kompilowane i skąd je będziesz brać. Jeśli np. chciałbyś porównywać 2 wersje tego samego oprogramowania pn. firefox, gdzie obie pochodzą z repozytorium danego systemu, to późniejsza wersja dokona aktualizacji wcześniejszej. Dalej będziesz miał jedną wersję.
W przypadku binarek pobieranych ze strony FF (tych do rozpakowania gdziekolwiek) - problemu raczej miał nie będziesz, bo można mieć kilka katalogów.
W przypadku appimage - również możesz mieć tych paczek/wersji od groma.
W przypadku flatpak i snap - z każdej z nich będziesz miał jedną paczkę/wersję.
Jeśli w danej dystrybucji, lub pomiędzy flatpakami, czy snapami, są paczki - najczęściej - wersji deweloperskich, bądź o dłuższym wsparciu, które różnią się nazwami od "firefox" oraz zostały tak skompilowane, że mogą koegzystować z "podstawową" wersją FF z repo, to będziesz mógł korzystać również z takiej wersji, ale zasadniczo, wyłącznie jednej, "bieżącej" (bo nowsza zaktualizuje poprzednią).