How am I supposed to use GetComponent?

I hate to ask this question especially when it has been asked so many times, but I just don’t get how get component works. All the other threads I’ve been to haven’t helped in the slightest.

What I am trying to do is make an a fireball deal damage to another object when it collides with it. Usually I would use sendmessage, but here the player can charge up their fireball and make it do increased damage.

SO what I want to do is have the fireball directly take away the object’s health based on it’s charge level (if the object has a health variable).

using UnityEngine;
using System.Collections;

public class FireBall_beh : MonoBehaviour
{
	// Gameplay stuff
	public static float chargeLevel = 100f;
	public float speed = 12f;
	public float turnRate = 3f;
	public float lifeTime = 3f;
	private GameObject target;
	private Vector3 rayDir;
	
	// Charge level stuff
	private float particleStartSpeed;
	private float particleEmissionRate;
	private float particleRadius;
	public float baseDamage = 15f;


	void OnEnable ()
	{
		// change size depending on the charge level
		particleStartSpeed = particleSystem.startSpeed;
		particleEmissionRate = particleSystem.emissionRate;
		particleRadius = transform.localScale.y;
		
		particleSystem.startSpeed = (particleStartSpeed / 100) * chargeLevel;
		particleSystem.emissionRate = (particleEmissionRate / 100) * chargeLevel;
		transform.localScale = transform.localScale = new Vector3((particleRadius / 100) * chargeLevel, (particleRadius / 100) * chargeLevel, (particleRadius / 100) * chargeLevel);
		
		// Die after an ammount of time
		Invoke("Die", lifeTime);
				
		// Do a sphere cast to see if there are players to lock onto
		RaycastHit hit;
		rayDir = transform.forward;
		if(Physics.SphereCast(transform.position, 10, rayDir, out hit, 20f))
		{
			//Debug.Log(hit.collider.name);
			
			if(hit.collider.tag == "Player")
			{
				target = hit.collider.gameObject;
			}
		}
	}


	void FixedUpdate ()
	{
		// Move forward
		transform.Translate(0,0, speed * Time.deltaTime);
		
		// If this object has a target
		if(target != null)
		{
			// Check if the target is infront
			Vector3 targetDir = target.transform.position - transform.position;
			float angle = Vector3.Angle(targetDir, transform.forward);
			// Follow the target
			if(angle >= -90f && angle <= 90f )
			{
				Vector3 lookTarget = target.transform.position - transform.position;
				Quaternion rotation = Quaternion.LookRotation(lookTarget);
				transform.rotation = Quaternion.Lerp(transform.rotation, rotation, Time.deltaTime * turnRate);
			}
		}
	}
	
	void  OnTriggerEnter(Collider other) 
	{
		// Calculate damage
		float damage = (baseDamage / 100) * chargeLevel;
		// Get the script of the other object and take away it's health (if it has a health variable)
	
		// Die
		Die();

	}
		
	void Die()
	{
		// Change particel system paramaters back to normal
		particleSystem.startSpeed = particleStartSpeed;
		particleSystem.emissionRate = particleEmissionRate;
		transform.localScale = new Vector3(particleRadius, particleRadius, particleRadius);
		// Clear target
		target = null;
		// Deactivate
		gameObject.SetActive(false);
		
	}
}

The chargeLevel variable is a percentage 100 being how it is normally and it increases to 300% damage and size (this variable is set in the player script when the player fires it)

Thanks for all and any help and if there is a better way to do this please let me know.

I think I have just come up with a much simpler way to do this, that was kind of obvious, so don’t pay attention to this hahah.