Re: functions.php vs. bp-custom.php
For purposes of a single installation of BuddyPress, the main difference is when the files are loaded. Actions and filters in bp-custom.php are among the very first things loaded when BP is loaded. functions.php isn’t loaded until the theme is loaded, after all of the BP components. So if you need something to be loaded early, it’ll have to go into bp-custom.php.