The difference is that the first is illegal in standard C, and the second may or may not be.
{} in an initializer is not legal in C; you need at least one element between the { and }. (Some compilers might permit it as an extension; I think gcc does.)
A common idiom is
some_type blah[] = { 0 };
The initial element is initialized to 0 (which could be a null pointer, floating-point zero, a null character, etc.), and the remaining unspecified elements are initialized to zero for the appropriate type.
With the {NULL} initializer you're trying to initialize someObjects[0].type1, an int to NULL. The NULL macro is intended to be used as a null pointer constant. It may or may not be defined as a constant 0, so the legality of your initializer is implementation-specific.
Just write
MyStruct someObjects[5] = {0};