In terms of a compiled binary file, is there any difference between ?: and if/else chains? Won't the compiler optimize them both down to the same rough assembly? Or is there a distinct advantage for one of the other in any arena but legibility?
It depends.
Many microprocessors support conditional assignment. On these chipsets the code "x = test ? true : false" can be implemented very cleanly. The compiler may or may not recognize the pattern of assign,if(test){assign}, but the conditional operation makes it clear.
There are many potential ways to optimize if/else chains that depend on exactly how they are used. Again, the individual compiler may or may not recognize them, and may or may not take the optimization.
Generally this is a micro-optimization. Use the conditional operation because it makes your code more maintainable, not because of a potential compiler optimization.