You can specify when the first execution will be performed using the first parameter of the wp_schedule_event
function. So, according to your code, the first execution will be immediately and the following one will be in 7,884,000 seconds (which is around 91.25 days).
I do not recommend this approach because the WP cron scheduled periods accept only fixed-time periods, expressed in seconds. What I would do would be to schedule it daily, and check before performing your actions whether the current day is one of the four options: 3/30, 6/30, 9/30, or 12/31.
Something like:
function custom_cron_job() {
if ( ! wp_next_scheduled( 'custom_cron_job_run' ) ) {
wp_schedule_event( current_time( 'timestamp' ), 'daily', 'custom_cron_job_run' );
}
}
function custom_cron_job_run() {
if ( in_array( date( 'n/j' ), [ '3/30', '6/30', '9/30', '12/31' ], true ) ) {
// Do your stuff.
}
}
add_action( 'wp', 'custom_cron_job' );
add_action( 'custom_cron_job_run', 'custom_cron_job_run' );