Is it bad practice to split a C array by simply using a pointer to the middle of it?
Absolutely not! The whole point of programming in C is being able to do these neat pointer tricks!
Do note, however, that mergesort is not inplace so you will still need to malloc an auxiliary array. If you do the correct pointer tricks you can just malloc once and reuse it though.