This page describes it pretty well
If command is a null pointer, the system() function shall determine whether the host environment has a command processor. If command is not a null pointer, the system() function shall pass the string pointed to by command to that command processor to be executed in an implementation-defined manner; this might then cause the program calling system() to behave in a non-conforming manner or to terminate.
So yes it does invoke a bash interpreter, providing that this is the command processor determined by the C standard library implementation on that system. A child process is created that is destroyed when the command has executed.
EDIT: This is specific to C, other languages may function differently but it's usually like this