Ajuda para ler as funções

Boa. eu sou iniciante intermediário nesse Ramon
Eu já completei projetos simples ou copiando códigos e depois modificando

Mais eu quero ajuda para ler certas funções e saber como funciona

Eu estou usando o leitor RFID mais 2 código deferente copiando No mesmo projetos está funcionando mais eu tenho duvida no funcionamento
Aí o código quem quiser dá uma olhada
{
//
#include <Arduino.h>
#include <LiquidCrystal_I2C.h>
#include<MFRC522.h>
#include<SPI.h>

#define SS_PIN 10
#define RST_PIN 9
LiquidCrystal_I2C lcd(0x27,16,2);
String conteudo= "";
String IDtag = ""; //Variável que armazenará o ID da Tag
bool Permitido = false; //Variável que verifica a permissão
//Vetor responsável por armazenar os ID's das Tag's cadastradas
String TagsCadastradas[] = {"xxxxxx",
"Xxxxxxx",
"Xxxxxxx",
"Xxxxxxx"
};
MFRC522 LeitorRFID(SS_PIN, RST_PIN); // Cria uma nova instância para o leitor e passa os pinos como parâmetro

////* altorização dois voids
void Leitura();
void acessoLiberado();
void acessoNegado();
void efeitoPermitido();
void efeitoNegado();
void mensageminicial();
///*

void setup() {
Serial.begin(9600); // Inicializa a comunicação Serial
SPI.begin(); // Inicializa comunicacao SPI
LeitorRFID.PCD_Init(); // Inicializa o leitor RFID
lcd.init();
lcd.backlight();
// pinMode(LED_VERDE, OUTPUT); // Declara o pino do led verde como saída
// pinMode(LED_VERMELHO, OUTPUT); // Declara o pino do led vermelho como saída
// pinMode(BUZZER, OUTPUT); // Declara o pino do buzzer como saída
mensageminicial();
}
void loop() {
Leitura(); //Chama a função responsável por fazer a leitura das Tag's
}
void Leitura(){
IDtag = ""; //Inicialmente IDtag deve estar vazia.

     // Verifica se existe uma Tag presente 
     if ( !LeitorRFID.PICC_IsNewCardPresent() || !LeitorRFID.PICC_ReadCardSerial() ) { 
         delay(50); 
         return; 
     } 
      
     // Pega o ID da Tag através da função LeitorRFID.uid e Armazena o ID na variável IDtag         
     for (byte i = 0; i < LeitorRFID.uid.size; i++) { 
        // 

// Serial.print(LeitorRFID.uid.uidByte[i] < 0x10 ? " 0" : " ");
// Serial.print(LeitorRFID.uid.uidByte[i], HEX);
// IDtag.concat(String(LeitorRFID.uid.uidByte[i] < 0x10 ? " 0" : " "));
//IDtag.concat(String(LeitorRFID.uid.uidByte[i], HEX));
//
IDtag.concat(String(LeitorRFID.uid.uidByte[i], HEX));
}

     //Compara o valor do ID lido com os IDs armazenados no vetor TagsCadastradas[] 
     for (int i = 0; i < (sizeof(TagsCadastradas)/sizeof(String)); i++) { 
       if(  IDtag.equalsIgnoreCase(TagsCadastradas[i])  ){ 
           Permitido = true; //Variável Permitido assume valor verdadeiro caso o ID Lido esteja cadastrado 
       } 
     }        
     if(Permitido == true) acessoLiberado(); //Se a variável Permitido for verdadeira será chamada a função acessoLiberado()         
     else acessoNegado(); //Se não será chamada a função acessoNegado() 
     delay(2000); //aguarda 2 segundos para efetuar uma nova  
      
     for (byte i = 0; i < LeitorRFID.uid.size; i++)  
 { 
  
   
 } 

}
void acessoLiberado(){
Serial.println("Tag Cadastrada: " + IDtag); //Exibe a mensagem "Tag Cadastrada" e o ID da tag não cadastrada
efeitoPermitido(); //Chama a função efeitoPermitido()
//Seta a variável Permitido como false novamente
Serial.print("UID da tag :");

Serial.println();
Serial.print("Mensagem : ");
IDtag.toUpperCase();

{//pessoa 1

if(  IDtag.equalsIgnoreCase(TagsCadastradas[0])  ){ 
 Serial.println("Nome Formando: Vinicius, Conv 1: alex. conv2: bruno"); 
 Serial.println("ultimo 4 digitos do cpf:"); 
 Serial.print("formado:"); 
 Serial.println("1234"); 

Serial.print("Conv1:");
Serial.println("1234");

Serial.print("Conv2:");
Serial.println("1234");
////
lcd.clear();

lcd.setCursor(0,0);
lcd.print("Bem Vindo");
lcd.setCursor(0,1);
lcd.print("Vinicius e conv");

delay(3000); 
Permitido = false; 

mensageminicial();
}
}
{//pessoa 2

if(  IDtag.equalsIgnoreCase(TagsCadastradas[1])  ){ 
 Serial.println("Nome Formando: carlos, Conv 1: babara. conv2: pipi"); 
 Serial.println("ultimo 4 digitos do cpf:"); 
 Serial.print("formado:"); 
 Serial.println("1234"); 

Serial.print("Conv1:");
Serial.println("1234");

Serial.print("Conv2:");
Serial.println("1234");
////
lcd.clear();

lcd.setCursor(0,0);
lcd.print("Bem Vindo");
lcd.setCursor(0,1);
lcd.print("Carlos e conv");

delay(3000); 
Permitido = false; 

mensageminicial();
}
}
{//pessoa 3

if(  IDtag.equalsIgnoreCase(TagsCadastradas[2])  ){ 
 Serial.println("Nome Formando: bianca, Conv 1: clavo. conv2: Zoro"); 
 Serial.println("ultimo 4 digitos do cpf:"); 
 Serial.print("formado:"); 
 Serial.println("1234"); 

Serial.print("Conv1:");
Serial.println("1234");

Serial.print("Conv2:");
Serial.println("1234");
////
lcd.clear();

lcd.setCursor(0,0);
lcd.print("Bem Vindo");
lcd.setCursor(0,1);
lcd.print("bianca e conv");

delay(3000); 
Permitido = false; 

mensageminicial();
}
}
{//pessoa 4

if(  IDtag.equalsIgnoreCase(TagsCadastradas[3])  ){ 
 Serial.println("Nome Formando: diogo, Conv 1: clavo. conv2: Zoro"); 
 Serial.println("ultimo 4 digitos do cpf:"); 
 Serial.print("formado:"); 
 Serial.println("1234"); 

Serial.print("Conv1:");
Serial.println("1234");

Serial.print("Conv2:");
Serial.println("1234");
////
lcd.clear();

lcd.setCursor(0,0);
lcd.print("Bem Vindo");
lcd.setCursor(0,1);
lcd.print("diogo e conv");

delay(3000); 
Permitido = false; 

mensageminicial();
}
}

}

void acessoNegado(){
Serial.println("Tag NAO Cadastrada: " + IDtag); //Exibe a mensagem "Tag NAO Cadastrada" e o ID da tag cadastrada
efeitoNegado(); //Chama a função efeitoNegado()

}
void efeitoPermitido()
{

}
void efeitoNegado()
{

 lcd.clear(); 
 lcd.setCursor(0,0); 

lcd.print("Aceso negado"); 
delay(2000); 
mensageminicial(); 

}
void mensageminicial()
{
lcd.clear();
lcd.print(" Aproxime o seu");
lcd.setCursor(0,1);
lcd.print("cartao do leitor");
//

}

Mais tem coisas que não intendo e tão si possível gostaria que alguém min explicasse
Aque tá trechos que tenho dúvidas
////
for (int i = 0; i < (sizeof(TagsCadastradas)/sizeof(String)); i++) {
////
IDtag.concat(String(LeitorRFID.uid.uidByte[i], HEX));
}
////////

Para ser sincero estou pouco certo da natureza da tua pergunta. Mas existe o recurso https://docs.arduino.cc/learn/programming/functions que explica um pouco de como operar com funções corretamente.

Por favor lê How to use this forum - please read. para dicas em como melhorar a qualidade das publicações. Principalmente a formatação de código pode ajudar muito a preceber melhor o problema e receber mais respostas.