Join strings with different delimiters and some possibly empty strings
It doesn't look too bad to me; I'd make a few changes.

def my_join(major, minor, patch=None, prerelease=None,
            build=None, revision=None):
    version_parts = ['.'.join((major, minor, patch or ''))]

    if prerelease:
        version_parts.append('-%s' % prerelease)
    if build:
        version_parts.append('+b%s' % build)
    if revision:
        version_parts.append('.%s' % revision)

    version = ''.join(version_parts)

    return version


Instead of building the string piece-by-piece, this code adds the needed parts to a list which is then joined at the end. I also removed the overpowered call to filter, and instead used or to make the patch value be '' if patch is False-ish, as it would be if patch is None.