You cannot redirect inside process_bulk_actions() call, by the time WordPress is processing that file headers were already sent ( do not know exactly why ). You should simply write a message, and use wp_die( $message ) instead of die().
When you use bulk actions WordPress redirects that action to the file showing the list, and that file is going to show your message only if you use wp_die() within process_bulk_actions().
Also, if you want to use the normal actions ( not bulk ) like Edit | Delete, you can use something like this before creating the list object and calling prepare_items():
[Note this code is not in the list class file, but in the file using it, the file that shows the table]
// modify yourslug to fit what you defined in construct 'singular' item
// modify my-edit-file.php with the name of the file which is going to handle
// your edit or delete action.
// $itemId will be received and used by my-edit-file.php
if(isset($_REQUEST['action']) && $_REQUEST['action'] === 'edit'){
$itemId = filter_input(INPUT_GET, 'yourslug', FILTER_VALIDATE_INT);
require_once(plugin_dir_path(__FILE__) . 'my-edit-file.php');
wp_die();
}
$table = new MyObjectListTable();
$table->prepare_items();