To answer this questions needed to understand why google have implement "canonical" tag.
Before, to determine is content duplicated or not. Google bot downloaded page content and via complex algorithm compare it with other page in index. As i think there are special bot running through indexed pages database and searching duplicates (that's why copy-paste sites take ban not right after indexation but in some time after).
Tag "Canonical" make this task more easier, Google bot don't need to download page with duplicate content, just need to check section, and may be hash or something like "hashsumm" for . So there are no necessity to download and store same data few times(delete stored data is hard for high-load data centers). It's more effective and fast way to crawl large data sets like web. Also link and url related data, i think, should be added to primary page data set.
I've made a test on this, Google download much less data if the page has rel="canonical" to other page, compare to primary page.
So according this answers for your questions are:
1. Link just flow as usual's, all link data for duplicated pages merge with data for primary page. So PR may slightly decrease in some cases,by the way if you have links from same pages to both primary and duplicated pages. But impact is not critical, almost similar to 301.
2. No, because Google bot check not only canonical. About this i have one more point, Google is statistical SE, and rate pages on topics, so in you case even if canonical will added to pages, it will not help you rank better for both terms.