Principal: this element in a policy specifies the principal that is allowed or denied an access to a resource. You can specify any of the following as principals
AWS account
IAM user
Federated user
IAM roles
AWS Services
For any thing which you create in AWS there will be a unique identifier, for resources like EC2, S3 etc we call it as ARN (Amazon Resource Name) and Principals also will have ARN (Amazon Resource Name)
Resource: Which resource you are allowing/denying the access in a statement. Resource are identified as ARNs
On Resources we can perform actions and when we define IAM policy we have to create authorization to some user to allow all actions or some actions or deny all actions or deny some actions.
For that we need to understand actions available in Resources, to make our policy effective.