NPCsThey aren't really that difficult in the simplest of forms. You basically just have to create one, plop them down where you want them. As you add more layers of depth to them, it gets a bit harder, but if you keep checking the GECK website or elsewhere for tutorials (or look at existing creatures in game) it isn't so bad. You can use packages to set up how they work (go to sleep from this time to that, hang around this cell from this time to that, etc, maybe eat here, or have a shop open there). http://geck.gamesas.com/index.php/Category:Packages
The dialogue can take a bit of getting used to, especially if you used other editors before. You could look up some info on these. One of the usual ways to do it is to create quests that have the dialogue in them. Even if the NPCs won't be part of an actual quest, you can use a quest to store all their dialogue. Something you will notice when doing dialogues is that you nearly always use the condition GetIsID - this is used to make sure only the specific character is talking. Sometimes this will be replaced with faction checks or cell checks to have groups of NPCs sharing the same conversation options, especially in generic NPCs. http://geck.gamesas.com/index.php/Category:Dialogue
As for followers, that is basically tweaking the packages and dialogue choices so they do certain things. You can also look at the main game NPCs if you want them to match similarly to those, as well as optionally keeping the follower limit and counting them as such. You could also expand them to make them more functional, more realistic and varied conversations, etc. As to how hard it is, the basic stuff only requires learning the standard dialogue stuff as well as how to use packages. The rest depends on how advanced you make the companions. Typing fallout 3 follower tutorial or anything similar will give you a good number of results. I know this website had some, and I'm sure the nexus and other sites do as well.
.ESPI never had a problem, but if there are issues you might want to research more or wait for others to possibly answer. If you do break them up, I imagine it should be done in some sensible manner. If it is a very linear 'path', you could reach a certain point and have it broke up. Or if it will have a lot of optional things, you might break them up that way (such as, this one has all the extra followers, this one has new weapon types and armors, and this one is the default with just the main module stuff).
That being said, I know people also tend to like their mods compact to some extent. While it is nice to have lots of options in the mod, it can also be a hassle with so many separate mod files compared to one and it's done. Like I said, do a bit more research if it worries you to find out exactly how much would need created before running into any issues.
Bobble HeadsNever messed with them beyond adding a medicine bobble for an alternate start I made (where you would miss it otherwise). I don't think it would be too difficult. To remove the stat bonus, you would create a new item (load up the item in geck, change the id and it will ask you to make a new one, pick yes). Then just remove the attached perk or script (iirc its a script) so you won't get any bonus from it. Don't have my stuff handy to load it up and check, but I think it is that simple.
If you wanted custom bobble heads, you would then be required to get new models and the like of course, but to use the existing ones is no different than any other thing. You could always rename them or what not. If you wanted to be more advanced (say one gives you +5 small guns +5 big guns +5 sneak, for instance), then you would have to create custom scripts for it. If you want to go that route, look up some help with scripts or look at similar items.
http://geck.gamesas.com/index.php/Category:Blocktypes website is a good one to look at for block types. These are things you will often use in scripts/triggers. These could be basic building blocks of scripts needed above.
PerksDon't have time to do a good search, but there was an older issue with perks, as listed http://geck.gamesas.com/index.php/Perk_Entry. But, if you have an updated version of Fallout (past 1.4), I think it should be fine. If you want to be more safe, you could still use scripting to allow a way for the players to remove perks (maybe have an item in your inventory when dropped removes all the new perks you add, then when picked up adds them back). Of course, you could always just let the user be aware, and I think most people update anyway, so it might be a non-issue.
To add them it is fairly simple. You need to create them, then have a point they will be added using http://geck.gamesas.com/index.php/AddPerk. Note that the link there also gives an alternative way to remove all perks for the user if you decide to go that route. You could have them added through a quest, picking up a certain item, a dialogue - however you decide.
Besides the block type list, another very handy one is the functions, listed http://geck.gamesas.com/index.php/Category:Functions. Notice that there is a (next 200) which lets you go to a 2nd and 3rd page of lists. These are used very often when working with dialogue, scripts, and quests (which may have been used during the tutorial you followed). It is a good thing to have this (or another similar website) handy so you can find what you need.
A lot of text here, but hopefully something of it is useful. If you find you need help with a more specific thing as you go, just post on the forums and let us know and we will try to help. Perhaps someone else can add more to what I already said here as well. Good luck!