No, the only difference it can make is getting a compile time type error. But at runtime they are the same.
I'm not sure why simd-json is doing those transmutes, but my guess is that this code was somehow translated from C++ due to the use of the name "static cast".
No.
Again, this code may be translated from C++, where allocations are guaranteed to be 16 bytes aligned and so since they start writing at the index vec.len() they will be aligned to 16 bytes if the length is a multiple of 4. This still doesn't clear this up for me though, since they are writing a [i32; 4], whose alignment is still 4 and hence std::ptr::write would have been enough.