Just emphasizing that if you only need data from one, you don't need to get both. It depends on what you have. In the front end, you always have $modx->user (the modUser object). If you need the profile, you can get it with this:
$profile = $modx->user->getOne('Profile');
Suppose, though, that you only have the user ID for some other user and want to send an email. There's no need to get the user object unless you also need the username.
$profile = $modx->getObject('modUserProfile', array('internalKey' => $userId));
$email = $profile->get('email');
$fullName = $profile->get('fullname');
If you do need the username, you can add this step at the end:
$user = $profile->getOne('User');
$username = $user->get('username');
If you only have the ID and you want both the modUser and modUserProfile objects, a faster way is to use $modx->getObjectGraph(), which will only make one query to the database, but that's more complicated.