I use OpenOCD to program Cortex-M3 microcontrollers over JTAG. It works with many JTAG adapters including Olimex ARM-OCD-USB, Segger J-Link and Bus Pirate.
I'd guess that the .out is the raw binary to be copied to flash.
When JTAG loading, you need this binary as you're writing direct to the flash.
If the .out is in fact an ELF file. Use objdump to convert it.
"file" on a linux system can identify ELF files:
$ jrt@linux: file myfile.elf
ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped
But, not raw ARM binaries
$ jrt@linux: file myfile.bin
To see if your .out is an ARM binary, you could disassemble it. Or, just hexdump the start and look for what you expect at location 0 (likely the interrupt vectors).
$ xxd myfile.out | head
0000000: 7037 0020 fd52 0300 6553 0300 6d53 0300 p7. .R..eS..mS..
0000010: 8553 0300 7953 0300 8553 0300 0000 0000 .S..yS...S......
0000020: 0000 0000 0000 0000 0000 0000 8553 0300 .............S..
The ELF cannot be recreated from this. The Intel Hex file is another version of the binary. It's a list of addresses and chunks of data to write to the flash, but may contain holes.