Это обычная проблема, потому что java стал настолько большим. Часто трудно сказать, где заканчивается одна технология и начинается другая. Вы должны ознакомиться с документацией для всех различных компонентов, которые вы используете.
Например, если у вас есть папка 'target', то я предполагаю, что вы используете maven. Maven - это утилита Java, используемая для управления зависимостями. Когда вы 'mavenize' проект, вы соглашаетесь придерживаться нескольких стандартов, и Maven, в свою очередь, выполняет большую часть тяжелой работы для вас (компиляция кода, поиск зависимых библиотек и выполнение тестов). Часть того, что делает maven, это создание стандартных каталогов maven в этом случае 'target'
больше информации о Maven - http://maven.apache.org/
Что касается META-INF, то это часть спецификации Java EE. У него действительно есть цель, связанная с упаковкой и развертыванием, но вы, как правило, не будете использовать ее очень часто. Как правило, тот же принцип, что и Maven. Вы придерживаетесь стандарта Java EE, и совместимые с Java EE инструменты выполняют большую часть работы за вас.
Для получения дополнительной информации перейдите по этой ссылке - http://java.sun.com/blueprints/guidelines/designing_enterprise_applications/packaging_deployment/index.html
В общем, чтобы понять это, вы должны ознакомиться с некоторыми учебными пособиями по Java EE и обратиться к примерам и документации вашего контейнера.