It doesn't seem like your question has anything to do with homoiconicity---your example is about first-class & higher-order functions.
An equivalent definition in Julia would becons(x, y) = m -> m == 0 ? x : m == 1 ? y : throw(BoundsError())
car(z) = z(0)
cdr(z) = z(1)
I understand that "->" defines an anonymous function here, and ":" seperates the definition statements in that function.
No, the : is part of the ternary operator syntax: https://en.wikipedia.org/wiki/%3F: