LAST_INSERT_ID()
возвращает последний вставленный ID. Я не разбирал детально исходники MySQL и не могу точно сказать, как именно это функция отрабатывает, но логически, она должна вернуть последний вставленный именно Вами ID, не зависимо от других клиентов/запросов.
По поводу составных индексов - составной индекс в принципе не глобально отличается от обычного, если говорить совсем просто, Вы могли бы записать дату в одно поле и повесить на неё индекс, а могли бы создать 3 поля (год, месяц, день) и повесить составной индекс на 3 поля сразу. Если углубляться в тонкости работы MySQL, разница между ними будет, но... даже не знаю как это в кратце объяснить, в пределах "ответа". Касательно составного индекса, могу "по быстрому" дать один совет: если у Вас в выборке (в условиях) обязательно участвую два поля сразу - можете попробовать повесить на них составной индекс, если же эти поля участвуют в выборке по одному (или могут участвовать в такой выборке) - вешайте на каждое поле свой индекс. А вообще, мне кажется, лучше не заморачиваться с тонкостями составных индексов, в Вашем случае, с вероятностью 99% отлично подойдут обычные.