In simple language, the Rasa Core handles the conversation flow, utterances, actions, and Rasa NLU extract entities and intents.
Rasa NLU: It's the interpreter who understands the input. Basically figures out entities and labels the intent.
Rasa Core: It does the rest of the work you want your bot to do. The flow of conversation is the most important thing.
eg: You say "Hello" to the bot. Rasa NLU will understand the input's intent as a 'greeting' and Rasa Core will tell the bot to reply with a greeting.
About your second question:
The first example shows the entire workflow to create the bot, it shows how to set up the domain and the stories. Those are features from Rasa Core. At item 2 on this example (called Define an interpreter) the author explicitly said he is making use of Rasa NLU as the interpreter (but you could be even using another entity extractor framework).
The second example (the Rasa NLU one) shows how to train the entity and intent extractor only. You don't have any information about domains and stories, no information about the conversational flow, it is a pure NLU example (even though he is using the default run method from Rasa Core to run the bot).
Hope this helps!