Q:

Locking the fields and buttons when a certain condition is met

I have situation here, where I want to lock all the fields and buttons on a quote__c (custom object) where the status of the quote is changed to 'Sent' so that nothing can be editable on the quote. 
Any ideas how to do this? 

A:

As Robin mentions in his answer, this could be done via Page Layouts and Record Types, but I'd like to expand on that and give you some options and considerations:
Option A - Record Types/Page Layouts - UI Level Security:

2 Record Types

Unlocked (Default)
Locked

2 Page Layouts

Unlocked Layout (Assigned to Unlocked Record Type)
Locked Layout (Assigned to Locked Record Type)

(This layout would have all fields Marked as Read Only, and you could        even go as far as removing the action buttons for edit/delete/etc)

A Workflow rule that sets the Record Type to the "Locked" type when it meets your criteria. 

2 Considerations for this approach:

This is only viable IF all of the fields you want to stop a user from editing can be marked as "Read Only" on the Page Layout level.  In
  some cases, some fields may be required and cannot be set to Read
  Only
Since this is only marking the fields as Read Only on the UI/View Level, it isn't actually guaranteeing that these records cannot be changed.  These fields could still be changed via Workflows,
  Processes, DML Updates, Data Loader, or other API calls.  If you need
  to completely lock down modification on the Data/Model level, you
  should consider Validation rules (see below)

Option B - Validation Rule - Data Level Security:
You could also create a Validation Rule that is fired if any field is Changed (including if they attempt to change your Status == Sent field to dodge the VR), and inform them that they cannot make any changes since the Quote has already been sent. 
Example (This is a VR I have on our Event object):
AND(
    ISPICKVAL(PRIORVALUE(Status__c), 'Completed'),

    OR(
        ISCHANGED(Status__c),
        ISCHANGED(Confirmation_Status__c),
        ISCHANGED(WhatId),
        ISCHANGED(WhoId),
        ISCHANGED(Activity__c),
        ISCHANGED(Event_Length_in_Minutes__c),
        ISCHANGED(Department__c),
        ISCHANGED(Subject),
        ISCHANGED(ActivityDate),
        ISCHANGED(ActivityDateTime),
        ISCHANGED(No_Show__c)
    )
)

2 considerations for this approach:

This will block ALL changes from ANYONE regardless of method (WFR, Apex, API, etc) - The VR can be modified to expand access, allow the
  VR to be bypassed by certain Users/Profiles, and even to incorporate
  checks that will still allow automation to pass if you want to get
  very advanced) - But at its core without any modification, a VR like
  this would block ALL changes to the record after being marked as
  'Sent'
If you add additional fields to your object, you would need to remember to come back and edit this VR every time if you also wanted
  to block editing of those new fields. 

Option C - Apex - Data Level Security:
Option C is to code some custom apex validation rules, but I recommend avoiding this where possible - Validation Rules are easier to maintain by standard Administrators than a custom apex VR would be.  However you could also go the Apex route if Option A and B don't fit the needs of your business.