Custom shortcode not displaying categories and correct date

Just by looking at your code I see a few places I’d investigate.

1) I don’t see any use of the $atts that come through the shortcode. Specifically the ‘tax’ and ‘post_per_page’ attributes.

So try changing this;

'tax' => '',

to this:

'tax_query' => array(
    array(
        'taxonomy' => 'category',
        'field'    => 'slug',
        'terms'    => '$atts['tax']',
    ),
),

And same with the empty posts_per_page:

'posts_per_page' => '$atts['posts_per_page']',

Looks liek you got issue 1 fixed. Good job. 🙂

2) To fix the date issue we probably need to know how the custom field created by the events plugin is storing the event date.

EDIT: Yep. So it appears the plugin that created the custom post types also created a custom DB table. and if you are to get the event_start_date you’ll need to refer to that custom table.