Problema resolvido: para que o termninal não quebre, você precisa escapar do "e" comercial colocando o endereço da web em aspas simples : system("firefox 'http://example.com/123&456'")
O mesmo vale para os comandos do terminal direto: alexander@myUbuntu:~$ firefox 'http://example.com/123&456'