Execute code at the end of each quarter of year

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' );