S3 access permissions are a muddled affair, principally because there are three 'types' to understand.
A full discussion of the permission models (bucket access permissions, control lists and policies) can be found in the documentation (see: Setting Bucket and Object Access Permissions - Amazon Simple Storage Service). But as you've noticed:
Bucket and object permissions are independent of each other. An object does not inherit the permissions from its bucket. For example, if you create a bucket and grant write access to a user, you will not be able to access that user’s objects unless the user explicitly grants you access.
"Public access" means "a user from outside of your account that does not have IAM or S3 ACL access".
As with all bucket access permissions this can to be set for both the bucket actions (allow anyone to list the objects/allow anyone to create objects in your bucket; and do the same with the access control lists) and individual objects (read/write/ etc.)
n.b. if you're asking this because you are trying to make your S3 bucket publically accessible, a guide to doing that can be found in this answer. Just try not to end-up being the next open-s3-bucket company on the news please!