LangChain Agents - Confusing about certain concepts

Hi. I’m starting with langchain and i’m kind of confused about ceratin agents concepts. By looking some examples on the web, i can see that sometimes some devs use “AgentExecutor”, is it for customs agents?..and sometimes the agents are inititialized by the following way: “agent = initialize_agent()”, but they don’t use AgentExecutor. Former it is not a custom agent?.
At the docs (Agents | 🦜️🔗 Langchain) they introduce the agents by building a custom agents (i think)…so it is confuse to me.
Can you, please, send me a link or show me examples on how to build a custom agent and a “regular” or “built in” agent?..thanks in advanced.