Do I have to include components even if code works without them?

I created my character class and set the mesh & animation BP through C++.

MyCharacter.cpp

// skeletal mesh component //
	SKMesh = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("SKMesh"));
	SKMesh->SetupAttachment(RootComponent);
	// get mesh & animation blueprint //
	static ConstructorHelpers::FObjectFinder<USkeletalMesh>MeshAsset(TEXT("SkeletalMesh'/Game/Mannequin/Character/Mesh/SK_Mannequin.SK_Mannequin'"));
	static ConstructorHelpers::FObjectFinder<UAnimBlueprint>AnimAsset(TEXT("AnimBlueprint'/Game/Animation/Anim_Player_BP.Anim_Player_BP'"));
	// set mesh & animation //
	if (MeshAsset.Object && AnimAsset.Object)
	{
		SKMesh->SetSkeletalMesh(MeshAsset.Object);
		SKMesh->SetAnimInstanceClass(AnimAsset.Object->GeneratedClass);
	}
	// set mesh relative location & rotation //
	SKMesh->RelativeLocation = FVector(0.0f, 0.0f, -86.0f);
	SKMesh->RelativeRotation = FRotator(0.0f, -90.0f, 0.0f);

It compiles and works fine but IntelliSense is bothering me with a lot of pointer to incomplete class type is not allowed errors among a few others. If I include SkeletalMeshComponent.h most of them will go away with 1 persisting. Should I ignore the errors or are the component inclusions actually important?

It is usually best practice to include the headers, but your code and game should still run fine without them. We have found that different compilers will throw up the errors, namely the Clang compiler for PS4 seems to complain about missing types a lot so to avoid future problems it is worth adding the includes now.