If you are building a custom feature that will create its own urls then you should implement it like the blog does using the friendlyurl business class. If you are just trying to link to existing posts like in an html module just copy the links either from the browser url bar or right click an existing link and choose copy link location.
If you are making a custom feature I generally recommend that there be no cross talk across features other than consuming a feed or something it exposes. I mean technically in code you could build a custom feature that retrieves data from the blog feature but it may break someday when I make changes to the blog. The blog itself only has to use the url creation logic when creating new posts, it then stores the url along with the post so its not complicated for the blog to build its links, it just uses the url it knows it should use from the db. FormatBlogUrl function you mention is primarily for backward compatibility with upgraded sites that have blog posts created before we implemented the friendly urls in the blog (which was only 3-4 months ago).
mojoPortal content system features should be self contained and have no dependency on other features in my opinion and you should not use business object from one feature inside another. I'm in the process of moving most of the content features like blogs forums etc out of the main core projects so that a very light package of mojoportal can be built to include just the html module and whatever custom features a developer wants to include.