Как отсортировать массив по дате?
Используйте функцию usort. Для нее вам нужно будет написать callback-функци сравнения, в которую будут передаваться элементы из вашего массива.
В этой callback-функции вам нужно будет сделать перевод даты вида "1 июля 2021" либо в timestamp, либо в объект DateTime, и уже использовать их в сравнении между собой.
Ниже возможное решение. Разбирайся:
<?php
function myDataFormat($d) {
	$months = [
		'январь'=>'01',
		'июнь'=>'06',
		'июля'=>'07'
	];
	
	$splitted_data = explode(' ', $d);
	return $splitted_data[2]
		 	. $months[$splitted_data[1]]
		 	. str_pad($splitted_data[0], 2, '0', STR_PAD_LEFT) ;
}

function mySort($arr) {
	usort(
		$arr,
		function($a, $b) {
			return myDataFormat($a['data']) <=> myDataFormat($b['data']);
				
		}
	);
	
	return $arr;
}

$arr= [
    [
      "header"=>'',
      "title"=>'', 
      "data"=>'12 июнь 2021', 
    ],
    [
      "header"=>'',
      "title"=>'', 
      "data"=>'30 июнь 2021', 
    ],
    [
      "header"=>'',
      "title"=>'', 
      "data"=>'1 июля 2021', 
    ],
    [
      "header"=>'',
      "title"=>'', 
      "data"=>'1 январь 2020', 
    ]
  ];

$sorted = mySort($arr);

print_r($sorted);

PHP code online