I can only help with some of these questions.
1) PROCs are basically like user defined functions. Parameters can be passed to them and they can be called upon by any other part of the Story (ie within the same or other scripts included in the mod). They can even be used recursively by calling themselves if a condition is met.
PROC
ProcGivePartyExperience((INTEGER)_exp, (INTEGER)_counter)
AND
IntegerSubtract(_counter, 1, _nextCounter)
AND
_nextCounter > 0
THEN
PartyAddExperience(_exp);
ProcGivePartyExperience(_exp, _nextCounter);
IF
CharacterUnlockedTalent(_, "LoneWolf")
THEN
ProcGivePartyExperience(500, 10);
4) I'm not completely sure about adding quests to journals, but most likely you will need an entry in the Localization (TranslatedStringKeys) file that has the description of each entry for the quest. I think (if I'm remembering correctly) that story scripts use something like QuestAddEntry("questName", "questDescriptionKey"), where "questName" is a unique name for the quest and questDescriptionKey is a Key within the Localization file that points to what the actual text to display in-game is.