For your lead scoring, you set up a smart campaign for each action you want to score on. These don't need to be within a program - they can be created on their own and placed within a campaign folder. So as an example, if you want to add 10 points for everyone who clicks a link on your website, you would have a trigger "Clicks Link on Web Page; Link Name is any" (or whatever links you want to track specifically). Then your flow step would be "Change Score: Score Name = Lead Score, Change +10" This will pick up everyone in your database that does that action - regardless of whether or not they are a member of a campaign.
To filter out certain leads from receiving the score, you simply add that criteria under the smart list with your trigger. So if you have a list set up with people you don't want to score, you will add a filter of "Member of List not in {{list name}}" or if it's a certain field then that field criteria, eg Lead Source not equal to Free Subscription.
If you want leads of a certain score (eg 100 points) only syncing into Salesforce, then that is the same set up. Just create a smart campaign (again, doesn't need to be within a prgram) that has a Smart List with a trigger of "Data Value Changes: Attribute = Lead Score, New Value greater than 100" and a Flow Step of "Sync Lead to SFDC, Assign to {{whatever your assignment rules are}}" (usually leave as Use Auto Assignment Rules)