Replying to myself because others may find it useful and I think this merits some discussion due to either a regression or a bug:
chrome.permissions indeed is no longer available in content scripts and must now be accessed elsewhere. Furthermore, the user doesn't seem to be presented with an "allow/deny" dialog anymore, either.
As much as I am annoyed at how strict (and often misleadingly scary) Chrome's wording is about permissions - I do care about user's security and I feel this new behavior is a regression.
Here's how it works now:
When you call chrome.permissions.request - it must invoked by a user action (this is good), but not from a content script - so it's gotta be a button in the browser chrome (e.g. a toolbar button or an address bar button).... It's frustrating that this is the case because I only want to request permissions to access certain site APIs when a user does something on a webpage that requires it - now I have to pop up a message in the webpage and direct them to a button up in their browser chrome somewhere...
Furthermore, and here's what I feel is a regression: the user isn't asked what the permission is or presented "allow" or "deny" buttons anymore. You click the button, you get the permission, period. You aren't asked what that permission is! This is far more likely to allow deceptive practices and insecure situations than allowing the previous allow/deny dialog from content scripts, and I really can't understand the logic at all unless this is unintentional / a bug.
I'm keenly interested to hear a take on this from someone at Google, because I think this is actually less safe/secure behavior on top of being a much more convoluted and difficult process for me to manage as a developer.
Steve