CREATE extension does not automatically load or ensure that _PG_init() is run. It mainly runs the .sql script in your extension.
Thanks for the clarification. However, in my testing, _PG_init() did run when I executed CREATE EXTENSION. I suspect this might be happening because the SQL script defines C functions using MODULE_PATHNAME, which triggers the library load. In a new session, _PG_init() seems to run again when any of those C functions are executed.
You are right, if the create extension creates a C function it triggers the load of the library, which in turn causes _PG_init() to execute. Sorry for the confusion.